@astral/features 2.18.1 → 2.20.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/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/AutocompleteListItem.d.ts +13 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/AutocompleteListItem.js +20 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/index.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/index.js +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/styles.d.ts +361 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/styles.js +45 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/getShortFullName.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/getShortFullName.js +8 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/getShortFullName.test.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/getShortFullName.test.js +9 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/index.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/index.js +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/index.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/index.js +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/CryptoProCertAutocomplete.d.ts +7 -0
- package/cryproPro/components/CryptoProCertAutocomplete/CryptoProCertAutocomplete.js +29 -0
- package/cryproPro/components/CryptoProCertAutocomplete/index.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/index.js +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/utils/index.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/utils/index.js +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/index.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/index.js +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/transformCertificates.d.ts +12 -0
- package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/transformCertificates.js +18 -0
- package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/transformCertificates.test.d.ts +1 -0
- package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/transformCertificates.test.js +61 -0
- package/cryproPro/components/CryptoProCertFormAutocomplete/CryptoProCertFormAutocomplete.d.ts +8 -0
- package/cryproPro/components/CryptoProCertFormAutocomplete/CryptoProCertFormAutocomplete.js +11 -0
- package/cryproPro/components/CryptoProCertFormAutocomplete/index.d.ts +1 -0
- package/cryproPro/components/CryptoProCertFormAutocomplete/index.js +1 -0
- package/cryproPro/components/CryptoProProvider/CryptoProProvider.d.ts +14 -0
- package/cryproPro/components/CryptoProProvider/CryptoProProvider.js +14 -0
- package/cryproPro/components/CryptoProProvider/index.d.ts +1 -0
- package/cryproPro/components/CryptoProProvider/index.js +1 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/CryptoproviderInfo.d.ts +7 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/CryptoproviderInfo.js +25 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/index.d.ts +1 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/index.js +1 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/styles.d.ts +5 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/styles.js +12 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/PluginInfo/PluginInfo.d.ts +7 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/PluginInfo/PluginInfo.js +11 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/PluginInfo/index.d.ts +1 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/PluginInfo/index.js +1 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/SetupCryptoProWorkspaceModal.d.ts +8 -1
- package/cryproPro/components/SetupCryptoProWorkspaceModal/SetupCryptoProWorkspaceModal.js +11 -4
- package/cryproPro/components/SetupCryptoProWorkspaceModal/styles.d.ts +9 -0
- package/cryproPro/components/SetupCryptoProWorkspaceModal/styles.js +18 -0
- package/cryproPro/components/index.d.ts +3 -0
- package/cryproPro/components/index.js +3 -0
- package/cryproPro/constants/enums.d.ts +5 -0
- package/cryproPro/constants/enums.js +6 -0
- package/cryproPro/constants/error.d.ts +3 -0
- package/cryproPro/constants/error.js +3 -0
- package/cryproPro/constants/index.d.ts +2 -0
- package/cryproPro/constants/index.js +2 -0
- package/cryproPro/index.d.ts +1 -1
- package/cryproPro/index.js +1 -1
- package/cryproPro/services/CryptoProCertificateService/CryptoProCertificateService.d.ts +28 -1
- package/cryproPro/services/CryptoProCertificateService/CryptoProCertificateService.js +53 -1
- package/cryproPro/services/CryptoProCertificateService/CryptoProCertificateService.test.d.ts +4 -1
- package/cryproPro/services/CryptoProCertificateService/CryptoProCertificateService.test.js +117 -2
- package/cryproPro/services/CryptoProCertificateService/index.d.ts +1 -0
- package/cryproPro/services/CryptoProCertificateService/index.js +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/convertBase64toBlob/convertBase64toBlob.d.ts +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/convertBase64toBlob/convertBase64toBlob.js +3 -0
- package/cryproPro/services/CryptoProCertificateService/utils/convertBase64toBlob/index.d.ts +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/convertBase64toBlob/index.js +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateExpiresDate/getCertificateExpiresDate.d.ts +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateExpiresDate/getCertificateExpiresDate.js +6 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateExpiresDate/index.d.ts +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateExpiresDate/index.js +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/getCertificateOwnerShortName.d.ts +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/getCertificateOwnerShortName.js +11 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/index.d.ts +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/index.js +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateType/getCertificateType.d.ts +2 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateType/getCertificateType.js +12 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateType/index.d.ts +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/getCertificateType/index.js +1 -0
- package/cryproPro/services/CryptoProCertificateService/utils/index.d.ts +4 -0
- package/cryproPro/services/CryptoProCertificateService/utils/index.js +4 -0
- package/cryproPro/services/CryptoProSignService/CryptoProSignService.d.ts +33 -0
- package/cryproPro/services/CryptoProSignService/CryptoProSignService.js +52 -0
- package/cryproPro/services/CryptoProSignService/index.d.ts +1 -0
- package/cryproPro/services/CryptoProSignService/index.js +1 -0
- package/cryproPro/services/WorkspaceSetupService/WorkspaceSetupService.d.ts +42 -0
- package/cryproPro/services/WorkspaceSetupService/WorkspaceSetupService.js +93 -0
- package/cryproPro/services/WorkspaceSetupService/index.d.ts +1 -0
- package/cryproPro/services/WorkspaceSetupService/index.js +1 -0
- package/cryproPro/services/index.d.ts +2 -0
- package/cryproPro/services/index.js +2 -0
- package/cryproPro/stores/CryptoProStore/CryptoProStore.d.ts +87 -0
- package/cryproPro/stores/CryptoProStore/CryptoProStore.js +132 -0
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getCertificateOwnerShortName: (surname: string | null, name: string | null) => string | null;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const getCertificateOwnerShortName = (surname, name) => {
|
|
2
|
+
if (!surname || !name) {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
const [firstname, patronymic] = name.split(' ');
|
|
6
|
+
const [shortFirstname, shortPatronymic] = [
|
|
7
|
+
firstname ? `${firstname === null || firstname === void 0 ? void 0 : firstname.at(0)}.` : '',
|
|
8
|
+
patronymic ? `${patronymic === null || patronymic === void 0 ? void 0 : patronymic.at(0)}.` : '',
|
|
9
|
+
];
|
|
10
|
+
return [surname, shortFirstname, shortPatronymic].join(' ');
|
|
11
|
+
};
|
package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getCertificateOwnerShortName';
|
package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getCertificateOwnerShortName';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CertificateType } from '../../../../constants';
|
|
2
|
+
const IP_INN_LENGTH = 12;
|
|
3
|
+
const isIPINN = (inn) => (inn === null || inn === void 0 ? void 0 : inn.length) === IP_INN_LENGTH;
|
|
4
|
+
export const getCertificateType = (inn, ogrn) => {
|
|
5
|
+
if (isIPINN(inn)) {
|
|
6
|
+
if (ogrn) {
|
|
7
|
+
return CertificateType.SoleTrader;
|
|
8
|
+
}
|
|
9
|
+
return CertificateType.Individual;
|
|
10
|
+
}
|
|
11
|
+
return CertificateType.LegalEntity;
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getCertificateType';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getCertificateType';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CADESCOM_XML_SIGNATURE_TYPE, Certificate } from '@astral/cryptopro-cades';
|
|
2
|
+
/**
|
|
3
|
+
* @description Сервис для методов подписания КриптоПро
|
|
4
|
+
* */
|
|
5
|
+
export declare class CryptoProSignService {
|
|
6
|
+
/**
|
|
7
|
+
* @description Метод подписания в формате CMS
|
|
8
|
+
* @param certificate сертификат пользователя
|
|
9
|
+
* @param fileBuffer данные для подписания в виде массива байт либо в формате Base64 строки
|
|
10
|
+
* @param detach присоединять подпись к данным или отдельно?
|
|
11
|
+
* @param includeCertChain включать в результат всю цепочку?
|
|
12
|
+
* */
|
|
13
|
+
signCms: (certificate: Certificate, fileBuffer: ArrayBuffer, detach?: boolean, includeCertChain?: boolean) => Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* @description Метод подписания хэша указанным сертификатом в формате CMS
|
|
16
|
+
* @param certificate сертификат пользователя
|
|
17
|
+
* @param data данные для подписания в виде массива байт хэша либо сам хэш в формате hex строки (в любом регистре)
|
|
18
|
+
* @param includeCertChain включать в результат всю цепочку?
|
|
19
|
+
* */
|
|
20
|
+
signHashCms: (certificate: Certificate, fileBuffer: ArrayBuffer, includeCertChain?: boolean) => Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* @description Метод подписания указанным сертификатом в формате XmlDSig
|
|
23
|
+
* @param certificate сертификат пользователя
|
|
24
|
+
* @param data данные для подписания в виде массива байт либо в формате Base64 строки
|
|
25
|
+
* @param xmlSignatureType тип xml подписи
|
|
26
|
+
* */
|
|
27
|
+
signXmlCms: (certificate: Certificate, fileBuffer: ArrayBuffer, xmlSignatureType: CADESCOM_XML_SIGNATURE_TYPE) => Promise<string>;
|
|
28
|
+
/**
|
|
29
|
+
* @description Метод расшифровки данных
|
|
30
|
+
* @param encryptedData данные для расшифрования в виде массива байт либо в формате Base64 строки
|
|
31
|
+
* */
|
|
32
|
+
decryptCms: (fileBuffer: ArrayBuffer) => Promise<string>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { decrypt, sign, signHash, signXml, } from '@astral/cryptopro-cades';
|
|
11
|
+
/**
|
|
12
|
+
* @description Сервис для методов подписания КриптоПро
|
|
13
|
+
* */
|
|
14
|
+
export class CryptoProSignService {
|
|
15
|
+
constructor() {
|
|
16
|
+
/**
|
|
17
|
+
* @description Метод подписания в формате CMS
|
|
18
|
+
* @param certificate сертификат пользователя
|
|
19
|
+
* @param fileBuffer данные для подписания в виде массива байт либо в формате Base64 строки
|
|
20
|
+
* @param detach присоединять подпись к данным или отдельно?
|
|
21
|
+
* @param includeCertChain включать в результат всю цепочку?
|
|
22
|
+
* */
|
|
23
|
+
this.signCms = (certificate, fileBuffer, detach, includeCertChain) => __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
return sign(certificate, fileBuffer, detach, includeCertChain);
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* @description Метод подписания хэша указанным сертификатом в формате CMS
|
|
28
|
+
* @param certificate сертификат пользователя
|
|
29
|
+
* @param data данные для подписания в виде массива байт хэша либо сам хэш в формате hex строки (в любом регистре)
|
|
30
|
+
* @param includeCertChain включать в результат всю цепочку?
|
|
31
|
+
* */
|
|
32
|
+
this.signHashCms = (certificate, fileBuffer, includeCertChain) => __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
return signHash(certificate, fileBuffer, includeCertChain);
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* @description Метод подписания указанным сертификатом в формате XmlDSig
|
|
37
|
+
* @param certificate сертификат пользователя
|
|
38
|
+
* @param data данные для подписания в виде массива байт либо в формате Base64 строки
|
|
39
|
+
* @param xmlSignatureType тип xml подписи
|
|
40
|
+
* */
|
|
41
|
+
this.signXmlCms = (certificate, fileBuffer, xmlSignatureType) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
return signXml(certificate, fileBuffer, xmlSignatureType);
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* @description Метод расшифровки данных
|
|
46
|
+
* @param encryptedData данные для расшифрования в виде массива байт либо в формате Base64 строки
|
|
47
|
+
* */
|
|
48
|
+
this.decryptCms = (fileBuffer) => __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
return decrypt(fileBuffer);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './CryptoProSignService';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './CryptoProSignService';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type CheckWorkspace = {
|
|
2
|
+
isPluginInstalled: boolean;
|
|
3
|
+
hasCryptoProvider: boolean;
|
|
4
|
+
cspVersion: string | null;
|
|
5
|
+
hasErrors: boolean;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* @description Сервис для настройки рабочего места
|
|
9
|
+
* */
|
|
10
|
+
export declare class WorkspaceSetupService {
|
|
11
|
+
/**
|
|
12
|
+
* @description Флаг установки плагина КриптоПро
|
|
13
|
+
* */
|
|
14
|
+
isPluginInstalled: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @description Версия криптопровайдера КриптоПро
|
|
17
|
+
* */
|
|
18
|
+
cspVersion: string | null;
|
|
19
|
+
/**
|
|
20
|
+
* @description Флаг наличия ошибок
|
|
21
|
+
* */
|
|
22
|
+
hasErrors: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* @description Флаг установки криптопровайдера КриптоПро
|
|
25
|
+
* */
|
|
26
|
+
private hasCryptoProvider;
|
|
27
|
+
private static instance;
|
|
28
|
+
/**
|
|
29
|
+
* @description Флаг выполнения проверки рабочего места
|
|
30
|
+
* */
|
|
31
|
+
isLoading: boolean;
|
|
32
|
+
constructor();
|
|
33
|
+
/**
|
|
34
|
+
* @description Метод проверки состояния рабочего места
|
|
35
|
+
* */
|
|
36
|
+
checkWorkspace: () => Promise<CheckWorkspace>;
|
|
37
|
+
/**
|
|
38
|
+
* @description Метод сброса ошибок
|
|
39
|
+
* */
|
|
40
|
+
resetErrors: () => void;
|
|
41
|
+
}
|
|
42
|
+
export declare const createWorkspaceSetupService: () => WorkspaceSetupService;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { notify } from '@astral/ui';
|
|
11
|
+
import { getSystemInfo, } from '@astral/cryptopro-cades';
|
|
12
|
+
import { CRYPTO_PROVIDER_NOT_FOUND_CODE, PLUGIN_NOT_INITIALIZED_CODE, PLUGIN_NOT_INSTALLED_CODE, } from '../../constants';
|
|
13
|
+
/**
|
|
14
|
+
* @description Сервис для настройки рабочего места
|
|
15
|
+
* */
|
|
16
|
+
export class WorkspaceSetupService {
|
|
17
|
+
constructor() {
|
|
18
|
+
/**
|
|
19
|
+
* @description Флаг установки плагина КриптоПро
|
|
20
|
+
* */
|
|
21
|
+
this.isPluginInstalled = false;
|
|
22
|
+
/**
|
|
23
|
+
* @description Версия криптопровайдера КриптоПро
|
|
24
|
+
* */
|
|
25
|
+
this.cspVersion = null;
|
|
26
|
+
/**
|
|
27
|
+
* @description Флаг наличия ошибок
|
|
28
|
+
* */
|
|
29
|
+
this.hasErrors = false;
|
|
30
|
+
/**
|
|
31
|
+
* @description Флаг установки криптопровайдера КриптоПро
|
|
32
|
+
* */
|
|
33
|
+
this.hasCryptoProvider = false;
|
|
34
|
+
/**
|
|
35
|
+
* @description Флаг выполнения проверки рабочего места
|
|
36
|
+
* */
|
|
37
|
+
this.isLoading = false;
|
|
38
|
+
/**
|
|
39
|
+
* @description Метод проверки состояния рабочего места
|
|
40
|
+
* */
|
|
41
|
+
this.checkWorkspace = () => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
var _a;
|
|
43
|
+
this.isLoading = true;
|
|
44
|
+
let resultInfo = {};
|
|
45
|
+
try {
|
|
46
|
+
resultInfo = yield getSystemInfo();
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
const pluginError = error;
|
|
50
|
+
switch (pluginError.code) {
|
|
51
|
+
case PLUGIN_NOT_INSTALLED_CODE:
|
|
52
|
+
case PLUGIN_NOT_INITIALIZED_CODE: {
|
|
53
|
+
this.isPluginInstalled = false;
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
case CRYPTO_PROVIDER_NOT_FOUND_CODE: {
|
|
57
|
+
this.hasCryptoProvider = false;
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
default: {
|
|
61
|
+
notify.error(pluginError.message);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
this.isPluginInstalled = resultInfo.cryptoProInstalled;
|
|
67
|
+
this.hasCryptoProvider = Boolean((_a = resultInfo.cryptoProviderName) === null || _a === void 0 ? void 0 : _a.length);
|
|
68
|
+
this.cspVersion = resultInfo.cspVersion;
|
|
69
|
+
this.hasErrors = !(this.isPluginInstalled && this.hasCryptoProvider);
|
|
70
|
+
this.isLoading = false;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
isPluginInstalled: this.isPluginInstalled,
|
|
74
|
+
hasCryptoProvider: this.hasCryptoProvider,
|
|
75
|
+
cspVersion: this.cspVersion,
|
|
76
|
+
hasErrors: this.hasErrors,
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
/**
|
|
80
|
+
* @description Метод сброса ошибок
|
|
81
|
+
* */
|
|
82
|
+
this.resetErrors = () => {
|
|
83
|
+
this.hasErrors = false;
|
|
84
|
+
};
|
|
85
|
+
// делаем из класса singleton
|
|
86
|
+
if (WorkspaceSetupService.instance) {
|
|
87
|
+
return WorkspaceSetupService.instance;
|
|
88
|
+
}
|
|
89
|
+
WorkspaceSetupService.instance = this;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
WorkspaceSetupService.instance = null;
|
|
93
|
+
export const createWorkspaceSetupService = () => new WorkspaceSetupService();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './WorkspaceSetupService';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './WorkspaceSetupService';
|
|
@@ -1,2 +1,89 @@
|
|
|
1
|
+
import { CADESCOM_XML_SIGNATURE_TYPE, Certificate } from '@astral/cryptopro-cades';
|
|
2
|
+
import { FormatedCertificate } from '../../services';
|
|
3
|
+
import { CheckWorkspace } from '../../services/WorkspaceSetupService';
|
|
4
|
+
/**
|
|
5
|
+
* @description Стор для работы с сертификатами и выполнения криптоопераций. Является фасадом для сервисом КриптоПро
|
|
6
|
+
* */
|
|
1
7
|
export declare class CryptoProStore {
|
|
8
|
+
/**
|
|
9
|
+
* @description Флаг для открытия окна настройки рабочего места
|
|
10
|
+
* */
|
|
11
|
+
isRequestSetupWorkspace: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* @description Флаг установки плагина
|
|
14
|
+
* */
|
|
15
|
+
isPluginInstalled: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* @description Список сертификатов
|
|
18
|
+
* */
|
|
19
|
+
certificateList: Certificate[];
|
|
20
|
+
/**
|
|
21
|
+
* @description Список сертификатов приведенный к интерфейсу FormatedCertificate
|
|
22
|
+
* */
|
|
23
|
+
formatedCertificateList: FormatedCertificate[];
|
|
24
|
+
/**
|
|
25
|
+
* @description Сертификат, найденный по Skid
|
|
26
|
+
* */
|
|
27
|
+
certificateBySkid?: Certificate;
|
|
28
|
+
/**
|
|
29
|
+
* @description Информация о настройках рабочего места
|
|
30
|
+
* */
|
|
31
|
+
workspaceSetupInfo: CheckWorkspace;
|
|
32
|
+
private static instance;
|
|
33
|
+
private workspaceSetupService;
|
|
34
|
+
private cryptoProCertificateService;
|
|
35
|
+
private cryptoProSignService;
|
|
36
|
+
constructor();
|
|
37
|
+
/**
|
|
38
|
+
* @description Метод проверки настройки рабочего места
|
|
39
|
+
* */
|
|
40
|
+
checkWorkspace: () => Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* @description Метод сброса флага для открытия окна настройки рабочего места
|
|
43
|
+
* */
|
|
44
|
+
resetIsRequestSetupWorkspace: () => Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* @description Метод получения списка сертификатов
|
|
47
|
+
* */
|
|
48
|
+
getCertificateList: () => Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* @description Метод получения сертификата по skid
|
|
51
|
+
* */
|
|
52
|
+
getCertificateBySkid: (skid: string) => Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* @description Метод фильтрации списка сертификатов по ключам: subjectKeyId, innLe, inn
|
|
55
|
+
* */
|
|
56
|
+
filterCertificateList: (certificates: Certificate[], certificateSelectors?: string[]) => void;
|
|
57
|
+
/**
|
|
58
|
+
* @description Метод приведения списка сертификатов к интерфейсу FormatedCertificate
|
|
59
|
+
* * @param certificates список сертификатов
|
|
60
|
+
* */
|
|
61
|
+
formatCertificateList: (certificates: Certificate[]) => void;
|
|
62
|
+
/**
|
|
63
|
+
* @description Метод подписания в формате CMS
|
|
64
|
+
* @param certificate сертификат пользователя
|
|
65
|
+
* @param fileBuffer данные для подписания в виде массива байт либо в формате Base64 строки
|
|
66
|
+
* @param detach присоединять подпись к данным или отдельно?
|
|
67
|
+
* @param includeCertChain включать в результат всю цепочку?
|
|
68
|
+
* */
|
|
69
|
+
signCms: (certificate: Certificate, fileBuffer: ArrayBuffer, detach?: boolean, includeCertChain?: boolean) => Promise<string>;
|
|
70
|
+
/**
|
|
71
|
+
* @description Метод подписания хэша указанным сертификатом в формате CMS
|
|
72
|
+
* @param certificate сертификат пользователя
|
|
73
|
+
* @param data данные для подписания в виде массива байт хэша либо сам хэш в формате hex строки (в любом регистре)
|
|
74
|
+
* * @param includeCertChain включать в результат всю цепочку?
|
|
75
|
+
* */
|
|
76
|
+
signHashCms: (certificate: Certificate, fileBuffer: ArrayBuffer, includeCertChain?: boolean) => Promise<string>;
|
|
77
|
+
/**
|
|
78
|
+
* @description Метод подписания указанным сертификатом в формате XmlDSig
|
|
79
|
+
* @param certificate сертификат пользователя
|
|
80
|
+
* @param data данные для подписания в виде массива байт либо в формате Base64 строки
|
|
81
|
+
* @param xmlSignatureType тип xml подписи
|
|
82
|
+
* */
|
|
83
|
+
signXmlCms: (certificate: Certificate, fileBuffer: ArrayBuffer, xmlSignatureType: CADESCOM_XML_SIGNATURE_TYPE) => Promise<string>;
|
|
84
|
+
/**
|
|
85
|
+
* @description Метод расшифровки данных
|
|
86
|
+
* @param encryptedData данные для расшифрования в виде массива байт либо в формате Base64 строки
|
|
87
|
+
* */
|
|
88
|
+
decryptCms: (fileBuffer: ArrayBuffer) => Promise<string>;
|
|
2
89
|
}
|
|
@@ -1,2 +1,134 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { makeAutoObservable } from 'mobx';
|
|
11
|
+
import { CryptoProCertificateService, CryptoProSignService, } from '../../services';
|
|
12
|
+
import { createWorkspaceSetupService, } from '../../services/WorkspaceSetupService';
|
|
13
|
+
/**
|
|
14
|
+
* @description Стор для работы с сертификатами и выполнения криптоопераций. Является фасадом для сервисом КриптоПро
|
|
15
|
+
* */
|
|
1
16
|
export class CryptoProStore {
|
|
17
|
+
constructor() {
|
|
18
|
+
/**
|
|
19
|
+
* @description Флаг для открытия окна настройки рабочего места
|
|
20
|
+
* */
|
|
21
|
+
this.isRequestSetupWorkspace = false;
|
|
22
|
+
/**
|
|
23
|
+
* @description Флаг установки плагина
|
|
24
|
+
* */
|
|
25
|
+
this.isPluginInstalled = false;
|
|
26
|
+
/**
|
|
27
|
+
* @description Список сертификатов
|
|
28
|
+
* */
|
|
29
|
+
this.certificateList = [];
|
|
30
|
+
/**
|
|
31
|
+
* @description Список сертификатов приведенный к интерфейсу FormatedCertificate
|
|
32
|
+
* */
|
|
33
|
+
this.formatedCertificateList = [];
|
|
34
|
+
/**
|
|
35
|
+
* @description Сертификат, найденный по Skid
|
|
36
|
+
* */
|
|
37
|
+
this.certificateBySkid = {};
|
|
38
|
+
/**
|
|
39
|
+
* @description Информация о настройках рабочего места
|
|
40
|
+
* */
|
|
41
|
+
this.workspaceSetupInfo = {};
|
|
42
|
+
this.workspaceSetupService = {};
|
|
43
|
+
this.cryptoProCertificateService = {};
|
|
44
|
+
this.cryptoProSignService = {};
|
|
45
|
+
/**
|
|
46
|
+
* @description Метод проверки настройки рабочего места
|
|
47
|
+
* */
|
|
48
|
+
this.checkWorkspace = () => __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
this.isRequestSetupWorkspace = true;
|
|
50
|
+
this.workspaceSetupInfo = yield this.workspaceSetupService.checkWorkspace();
|
|
51
|
+
this.isPluginInstalled = this.workspaceSetupInfo.isPluginInstalled;
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* @description Метод сброса флага для открытия окна настройки рабочего места
|
|
55
|
+
* */
|
|
56
|
+
this.resetIsRequestSetupWorkspace = () => __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
this.isRequestSetupWorkspace = false;
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* @description Метод получения списка сертификатов
|
|
61
|
+
* */
|
|
62
|
+
this.getCertificateList = () => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
this.certificateList =
|
|
64
|
+
yield this.cryptoProCertificateService.getCertificateList();
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* @description Метод получения сертификата по skid
|
|
68
|
+
* */
|
|
69
|
+
this.getCertificateBySkid = (skid) => __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
this.certificateBySkid =
|
|
71
|
+
yield this.cryptoProCertificateService.getCertificateBySkid(skid);
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* @description Метод фильтрации списка сертификатов по ключам: subjectKeyId, innLe, inn
|
|
75
|
+
* */
|
|
76
|
+
this.filterCertificateList = (certificates, certificateSelectors) => {
|
|
77
|
+
this.certificateList =
|
|
78
|
+
this.cryptoProCertificateService.filterCertificateList(certificates, certificateSelectors);
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* @description Метод приведения списка сертификатов к интерфейсу FormatedCertificate
|
|
82
|
+
* * @param certificates список сертификатов
|
|
83
|
+
* */
|
|
84
|
+
this.formatCertificateList = (certificates) => {
|
|
85
|
+
this.formatedCertificateList =
|
|
86
|
+
this.cryptoProCertificateService.formatCertificateList(certificates);
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* @description Метод подписания в формате CMS
|
|
90
|
+
* @param certificate сертификат пользователя
|
|
91
|
+
* @param fileBuffer данные для подписания в виде массива байт либо в формате Base64 строки
|
|
92
|
+
* @param detach присоединять подпись к данным или отдельно?
|
|
93
|
+
* @param includeCertChain включать в результат всю цепочку?
|
|
94
|
+
* */
|
|
95
|
+
this.signCms = (certificate, fileBuffer, detach, includeCertChain) => __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
return this.cryptoProSignService.signCms(certificate, fileBuffer, detach, includeCertChain);
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* @description Метод подписания хэша указанным сертификатом в формате CMS
|
|
100
|
+
* @param certificate сертификат пользователя
|
|
101
|
+
* @param data данные для подписания в виде массива байт хэша либо сам хэш в формате hex строки (в любом регистре)
|
|
102
|
+
* * @param includeCertChain включать в результат всю цепочку?
|
|
103
|
+
* */
|
|
104
|
+
this.signHashCms = (certificate, fileBuffer, includeCertChain) => __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
return this.cryptoProSignService.signHashCms(certificate, fileBuffer, includeCertChain);
|
|
106
|
+
});
|
|
107
|
+
/**
|
|
108
|
+
* @description Метод подписания указанным сертификатом в формате XmlDSig
|
|
109
|
+
* @param certificate сертификат пользователя
|
|
110
|
+
* @param data данные для подписания в виде массива байт либо в формате Base64 строки
|
|
111
|
+
* @param xmlSignatureType тип xml подписи
|
|
112
|
+
* */
|
|
113
|
+
this.signXmlCms = (certificate, fileBuffer, xmlSignatureType) => __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
return this.cryptoProSignService.signXmlCms(certificate, fileBuffer, xmlSignatureType);
|
|
115
|
+
});
|
|
116
|
+
/**
|
|
117
|
+
* @description Метод расшифровки данных
|
|
118
|
+
* @param encryptedData данные для расшифрования в виде массива байт либо в формате Base64 строки
|
|
119
|
+
* */
|
|
120
|
+
this.decryptCms = (fileBuffer) => __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
return this.cryptoProSignService.decryptCms(fileBuffer);
|
|
122
|
+
});
|
|
123
|
+
// делаем из класса singleton
|
|
124
|
+
if (CryptoProStore.instance) {
|
|
125
|
+
return CryptoProStore.instance;
|
|
126
|
+
}
|
|
127
|
+
CryptoProStore.instance = this;
|
|
128
|
+
this.workspaceSetupService = createWorkspaceSetupService();
|
|
129
|
+
this.cryptoProCertificateService = new CryptoProCertificateService();
|
|
130
|
+
this.cryptoProSignService = new CryptoProSignService();
|
|
131
|
+
makeAutoObservable(this, {}, { autoBind: true });
|
|
132
|
+
}
|
|
2
133
|
}
|
|
134
|
+
CryptoProStore.instance = null;
|
package/package.json
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
"name": "@astral/features",
|
|
3
3
|
"browser": "./index.js",
|
|
4
4
|
"main": "./index.js",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.20.0",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@astral/ui": "^2.
|
|
7
|
+
"@astral/ui": "^2.20.0",
|
|
8
8
|
"mobx": "^6.8.0",
|
|
9
|
-
"mobx-react-lite": "^3.4.0"
|
|
9
|
+
"mobx-react-lite": "^3.4.0",
|
|
10
|
+
"@astral/cryptopro-cades": "^1.5.1"
|
|
10
11
|
},
|
|
11
12
|
"peerDependencies": {
|
|
12
13
|
"react": ">=17.0.0"
|