@astral/features 2.19.0 → 2.20.1

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 (97) hide show
  1. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/AutocompleteListItem.d.ts +13 -0
  2. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/AutocompleteListItem.js +20 -0
  3. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/index.d.ts +1 -0
  4. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/index.js +1 -0
  5. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/styles.d.ts +361 -0
  6. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/styles.js +45 -0
  7. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/getShortFullName.d.ts +1 -0
  8. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/getShortFullName.js +8 -0
  9. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/getShortFullName.test.d.ts +1 -0
  10. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/getShortFullName.test.js +9 -0
  11. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/index.d.ts +1 -0
  12. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/getShortFullName/index.js +1 -0
  13. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/index.d.ts +1 -0
  14. package/cryproPro/components/CryptoProCertAutocomplete/AutocompleteListItem/utils/index.js +1 -0
  15. package/cryproPro/components/CryptoProCertAutocomplete/CryptoProCertAutocomplete.d.ts +7 -0
  16. package/cryproPro/components/CryptoProCertAutocomplete/CryptoProCertAutocomplete.js +29 -0
  17. package/cryproPro/components/CryptoProCertAutocomplete/index.d.ts +1 -0
  18. package/cryproPro/components/CryptoProCertAutocomplete/index.js +1 -0
  19. package/cryproPro/components/CryptoProCertAutocomplete/utils/index.d.ts +1 -0
  20. package/cryproPro/components/CryptoProCertAutocomplete/utils/index.js +1 -0
  21. package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/index.d.ts +1 -0
  22. package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/index.js +1 -0
  23. package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/transformCertificates.d.ts +12 -0
  24. package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/transformCertificates.js +18 -0
  25. package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/transformCertificates.test.d.ts +1 -0
  26. package/cryproPro/components/CryptoProCertAutocomplete/utils/transformCertificates/transformCertificates.test.js +61 -0
  27. package/cryproPro/components/CryptoProCertFormAutocomplete/CryptoProCertFormAutocomplete.d.ts +8 -0
  28. package/cryproPro/components/CryptoProCertFormAutocomplete/CryptoProCertFormAutocomplete.js +11 -0
  29. package/cryproPro/components/CryptoProCertFormAutocomplete/index.d.ts +1 -0
  30. package/cryproPro/components/CryptoProCertFormAutocomplete/index.js +1 -0
  31. package/cryproPro/components/CryptoProProvider/CryptoProProvider.d.ts +14 -0
  32. package/cryproPro/components/CryptoProProvider/CryptoProProvider.js +14 -0
  33. package/cryproPro/components/CryptoProProvider/index.d.ts +1 -0
  34. package/cryproPro/components/CryptoProProvider/index.js +1 -0
  35. package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/CryptoproviderInfo.d.ts +7 -0
  36. package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/CryptoproviderInfo.js +25 -0
  37. package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/index.d.ts +1 -0
  38. package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/index.js +1 -0
  39. package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/styles.d.ts +5 -0
  40. package/cryproPro/components/SetupCryptoProWorkspaceModal/CryptoproviderInfo/styles.js +12 -0
  41. package/cryproPro/components/SetupCryptoProWorkspaceModal/PluginInfo/PluginInfo.d.ts +7 -0
  42. package/cryproPro/components/SetupCryptoProWorkspaceModal/PluginInfo/PluginInfo.js +11 -0
  43. package/cryproPro/components/SetupCryptoProWorkspaceModal/PluginInfo/index.d.ts +1 -0
  44. package/cryproPro/components/SetupCryptoProWorkspaceModal/PluginInfo/index.js +1 -0
  45. package/cryproPro/components/SetupCryptoProWorkspaceModal/SetupCryptoProWorkspaceModal.d.ts +8 -1
  46. package/cryproPro/components/SetupCryptoProWorkspaceModal/SetupCryptoProWorkspaceModal.js +11 -4
  47. package/cryproPro/components/SetupCryptoProWorkspaceModal/styles.d.ts +9 -0
  48. package/cryproPro/components/SetupCryptoProWorkspaceModal/styles.js +18 -0
  49. package/cryproPro/components/index.d.ts +3 -0
  50. package/cryproPro/components/index.js +3 -0
  51. package/cryproPro/constants/enums.d.ts +5 -0
  52. package/cryproPro/constants/enums.js +6 -0
  53. package/cryproPro/constants/error.d.ts +3 -0
  54. package/cryproPro/constants/error.js +3 -0
  55. package/cryproPro/constants/index.d.ts +2 -0
  56. package/cryproPro/constants/index.js +2 -0
  57. package/cryproPro/index.d.ts +2 -1
  58. package/cryproPro/index.js +2 -1
  59. package/cryproPro/services/CryptoProCertificateService/CryptoProCertificateService.d.ts +28 -1
  60. package/cryproPro/services/CryptoProCertificateService/CryptoProCertificateService.js +53 -1
  61. package/cryproPro/services/CryptoProCertificateService/CryptoProCertificateService.test.d.ts +4 -1
  62. package/cryproPro/services/CryptoProCertificateService/CryptoProCertificateService.test.js +117 -2
  63. package/cryproPro/services/CryptoProCertificateService/index.d.ts +1 -0
  64. package/cryproPro/services/CryptoProCertificateService/index.js +1 -0
  65. package/cryproPro/services/CryptoProCertificateService/utils/convertBase64toBlob/convertBase64toBlob.d.ts +1 -0
  66. package/cryproPro/services/CryptoProCertificateService/utils/convertBase64toBlob/convertBase64toBlob.js +3 -0
  67. package/cryproPro/services/CryptoProCertificateService/utils/convertBase64toBlob/index.d.ts +1 -0
  68. package/cryproPro/services/CryptoProCertificateService/utils/convertBase64toBlob/index.js +1 -0
  69. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateExpiresDate/getCertificateExpiresDate.d.ts +1 -0
  70. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateExpiresDate/getCertificateExpiresDate.js +6 -0
  71. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateExpiresDate/index.d.ts +1 -0
  72. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateExpiresDate/index.js +1 -0
  73. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/getCertificateOwnerShortName.d.ts +1 -0
  74. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/getCertificateOwnerShortName.js +11 -0
  75. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/index.d.ts +1 -0
  76. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateOwnerShortName/index.js +1 -0
  77. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateType/getCertificateType.d.ts +2 -0
  78. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateType/getCertificateType.js +12 -0
  79. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateType/index.d.ts +1 -0
  80. package/cryproPro/services/CryptoProCertificateService/utils/getCertificateType/index.js +1 -0
  81. package/cryproPro/services/CryptoProCertificateService/utils/index.d.ts +4 -0
  82. package/cryproPro/services/CryptoProCertificateService/utils/index.js +4 -0
  83. package/cryproPro/services/CryptoProSignService/CryptoProSignService.d.ts +33 -0
  84. package/cryproPro/services/CryptoProSignService/CryptoProSignService.js +52 -0
  85. package/cryproPro/services/CryptoProSignService/index.d.ts +1 -0
  86. package/cryproPro/services/CryptoProSignService/index.js +1 -0
  87. package/cryproPro/services/WorkspaceSetupService/WorkspaceSetupService.d.ts +42 -0
  88. package/cryproPro/services/WorkspaceSetupService/WorkspaceSetupService.js +93 -0
  89. package/cryproPro/services/WorkspaceSetupService/index.d.ts +1 -0
  90. package/cryproPro/services/WorkspaceSetupService/index.js +1 -0
  91. package/cryproPro/services/index.d.ts +2 -0
  92. package/cryproPro/services/index.js +2 -0
  93. package/cryproPro/stores/CryptoProStore/CryptoProStore.d.ts +87 -0
  94. package/cryproPro/stores/CryptoProStore/CryptoProStore.js +132 -0
  95. package/cryproPro/types.d.ts +1 -0
  96. package/cryproPro/types.js +1 -0
  97. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ export * from './getCertificateExpiresDate';
@@ -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
+ };
@@ -0,0 +1 @@
1
+ export * from './getCertificateOwnerShortName';
@@ -0,0 +1 @@
1
+ export * from './getCertificateOwnerShortName';
@@ -0,0 +1,2 @@
1
+ import { CertificateType } from '../../../../constants';
2
+ export declare const getCertificateType: (inn: string | null, ogrn: string | null) => CertificateType;
@@ -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,4 @@
1
+ export * from './getCertificateExpiresDate';
2
+ export * from './getCertificateOwnerShortName';
3
+ export * from './getCertificateType';
4
+ export * from './convertBase64toBlob';
@@ -0,0 +1,4 @@
1
+ export * from './getCertificateExpiresDate';
2
+ export * from './getCertificateOwnerShortName';
3
+ export * from './getCertificateType';
4
+ export * from './convertBase64toBlob';
@@ -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 +1,3 @@
1
1
  export * from './CryptoProCertificateService';
2
+ export * from './CryptoProSignService';
3
+ export * from './WorkspaceSetupService';
@@ -1 +1,3 @@
1
1
  export * from './CryptoProCertificateService';
2
+ export * from './CryptoProSignService';
3
+ 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;
@@ -0,0 +1 @@
1
+ export { Certificate } from '@astral/cryptopro-cades';
@@ -0,0 +1 @@
1
+ export { Certificate } from '@astral/cryptopro-cades';
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.19.0",
5
+ "version": "2.20.1",
6
6
  "dependencies": {
7
- "@astral/ui": "^2.19.0",
7
+ "@astral/ui": "^2.20.1",
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"