This commit is contained in:
Sergey Shehovcov 2024-07-05 10:22:56 +03:00
parent c661a8e144
commit a287a7af80
31 changed files with 532 additions and 419 deletions

View File

@ -2,7 +2,7 @@
Асинхронный JavaScript API для работы с КриптоПРО ЭЦП Browser Plug-In
> **Является форком [crypto-pro-web/crypto-pro-js-pro](https://github.com/crypto-pro-web/crypto-pro-js)**
> **Является форком [crypto-pro-web/crypto-pro-js](https://github.com/crypto-pro-web/crypto-pro-js)**
## Отличия от оригинальной библиотеки:
@ -14,7 +14,7 @@
### Версионность
Пакет основан на версии 2.3.3 пакета [crypto-pro-web/crypto-pro-js-pro](https://github.com/crypto-pro-web/crypto-pro-js)
Пакет основан на версии 2.3.3 пакета [crypto-pro-web/crypto-pro-js](https://github.com/crypto-pro-web/crypto-pro-js)
<a name="lisense"></a>

View File

@ -1,7 +1,7 @@
{
"name": "crypto-pro-js",
"name": "crypto-pro-js-m",
"description": "Асинхронный JavaScript API для работы с КриптоПРО ЭЦП Browser Plug-In. Forked from https://github.com/vgoma/crypto-pro",
"main": "./lib/crypto-pro-js.js",
"main": "./lib/crypto-pro-js-m.js",
"authors": [
"kern.usr <kern.usr@gmail.com>",
"vgoma <vgoma@yandex.ru>"

View File

@ -1,8 +1,10 @@
import { SignType } from '../helpers/getSignType';
/**
* Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param signedMessage - подписанное сообщение
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
export declare const addAttachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer) => Promise<string>;
export declare const addAttachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, signType?: SignType) => Promise<string>;

View File

@ -1,9 +1,11 @@
import { SignType } from '../helpers/getSignType';
/**
* Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param signedMessage - подписанное сообщение
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
export declare const addDetachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string) => Promise<string>;
export declare const addDetachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string, signType?: SignType) => Promise<string>;

View File

@ -1,8 +1,10 @@
import { SignType } from '../helpers/getSignType';
/**
* Создает присоединенную подпись сообщения по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param message - подписываемое сообщение
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
export declare const createAttachedSignature: (thumbprint: string, unencryptedMessage: string | ArrayBuffer) => Promise<string>;
export declare const createAttachedSignature: (thumbprint: string, unencryptedMessage: string | ArrayBuffer, signType?: SignType) => Promise<string>;

View File

@ -1,8 +1,10 @@
import { SignType } from '../helpers/getSignType';
/**
* Создает отсоединенную подпись хеша по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
export declare const createDetachedSignature: (thumbprint: string, messageHash: string) => Promise<string>;
export declare const createDetachedSignature: (thumbprint: string, messageHash: string, signType?: SignType) => Promise<string>;

7
dist/crypto-pro-js-m.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
// Type definitions for crypto-pro-js-m 0.1.3
// Project: crypto-pro-js-m
// Definitions by: Serge Schekhovtsov https://github.com/schekhovtsov
export as namespace cryptoPro;
export * from './api';

View File

@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./crypto-pro-js.ts");
/******/ return __webpack_require__(__webpack_require__.s = "./crypto-pro-js-m.ts");
/******/ })
/************************************************************************/
/******/ ({
@ -2256,14 +2256,18 @@ var _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extra
var _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
var _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
var _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
var getSignType_1 = __webpack_require__(/*! ../helpers/getSignType */ "./helpers/getSignType.ts");
/**
* Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param signedMessage - подписанное сообщение
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
exports.addAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function (thumbprint, signedMessage) { return __awaiter(void 0, void 0, void 0, function () {
exports.addAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function (thumbprint, signedMessage, signType) {
if (signType === void 0) { signType = 'PKCS7'; }
return __awaiter(void 0, void 0, void 0, function () {
var cadesplugin, cadesCertificate;
return __generator(this, function (_a) {
switch (_a.label) {
@ -2316,9 +2320,10 @@ exports.addAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(functio
throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');
}
var signature;
var signTypeConst = getSignType_1.getSignType(cadesplugin, signType);
try {
void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, signTypeConst));
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, signTypeConst);
}
catch (error) {
console.error(error);
@ -2328,7 +2333,8 @@ exports.addAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(functio
}))];
}
});
}); });
});
});
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/buffer/index.js */ "../node_modules/buffer/index.js").Buffer))
@ -2387,15 +2393,19 @@ var _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extra
var _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
var _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
var _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
var getSignType_1 = __webpack_require__(/*! ../helpers/getSignType */ "./helpers/getSignType.ts");
/**
* Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param signedMessage - подписанное сообщение
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
exports.addDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function (thumbprint, signedMessage, messageHash) { return __awaiter(void 0, void 0, void 0, function () {
exports.addDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function (thumbprint, signedMessage, messageHash, signType) {
if (signType === void 0) { signType = 'PKCS7'; }
return __awaiter(void 0, void 0, void 0, function () {
var cadesplugin, cadesCertificate;
return __generator(this, function (_a) {
switch (_a.label) {
@ -2449,12 +2459,10 @@ exports.addDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(functio
throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');
}
var signature;
var signTypeConst = getSignType_1.getSignType(cadesplugin, signType);
try {
void (_generateCadesFn_1.__cadesAsyncToken__ +
cadesSignedData.VerifyHash(cadesHashedData, signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));
signature =
_generateCadesFn_1.__cadesAsyncToken__ +
cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.VerifyHash(cadesHashedData, signedMessage, signTypeConst));
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, signTypeConst);
}
catch (error) {
console.error(error);
@ -2464,7 +2472,8 @@ exports.addDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(functio
}))];
}
});
}); });
});
});
/***/ }),
@ -3063,14 +3072,18 @@ var _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extra
var _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
var _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
var _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
var getSignType_1 = __webpack_require__(/*! ../helpers/getSignType */ "./helpers/getSignType.ts");
/**
* Создает присоединенную подпись сообщения по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param message - подписываемое сообщение
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function (thumbprint, unencryptedMessage) { return __awaiter(void 0, void 0, void 0, function () {
exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function (thumbprint, unencryptedMessage, signType) {
if (signType === void 0) { signType = 'PKCS7'; }
return __awaiter(void 0, void 0, void 0, function () {
var cadesplugin, cadesCertificate;
return __generator(this, function (_a) {
switch (_a.label) {
@ -3123,8 +3136,9 @@ exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(func
throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');
}
var signature;
var signTypeConst = getSignType_1.getSignType(cadesplugin, signType);
try {
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, signTypeConst);
}
catch (error) {
console.error(error);
@ -3134,7 +3148,8 @@ exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(func
}))];
}
});
}); });
});
});
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/buffer/index.js */ "../node_modules/buffer/index.js").Buffer))
@ -3193,14 +3208,18 @@ var _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extra
var _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
var _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
var _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
var getSignType_1 = __webpack_require__(/*! ../helpers/getSignType */ "./helpers/getSignType.ts");
/**
* Создает отсоединенную подпись хеша по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function (thumbprint, messageHash) { return __awaiter(void 0, void 0, void 0, function () {
exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function (thumbprint, messageHash, signType) {
if (signType === void 0) { signType = 'PKCS7'; }
return __awaiter(void 0, void 0, void 0, function () {
var cadesplugin, cadesCertificate;
return __generator(this, function (_a) {
switch (_a.label) {
@ -3254,10 +3273,9 @@ exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(func
throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');
}
var signature;
var signTypeConst = getSignType_1.getSignType(cadesplugin, signType);
try {
signature =
_generateCadesFn_1.__cadesAsyncToken__ +
cadesSignedData.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.SignHash(cadesHashedData, cadesSigner, signTypeConst);
}
catch (error) {
console.error(error);
@ -3267,7 +3285,8 @@ exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(func
}))];
}
});
}); });
});
});
/***/ }),
@ -4728,10 +4747,10 @@ exports.SUBJECT_TAGS_TRANSLATIONS = [
/***/ }),
/***/ "./crypto-pro-js.ts":
/*!**************************!*\
!*** ./crypto-pro-js.ts ***!
\**************************/
/***/ "./crypto-pro-js-m.ts":
/*!****************************!*\
!*** ./crypto-pro-js-m.ts ***!
\****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
@ -5309,6 +5328,37 @@ exports._parseCertInfo = function (tagsTranslations, rawInfo) {
};
/***/ }),
/***/ "./helpers/getSignType.ts":
/*!********************************!*\
!*** ./helpers/getSignType.ts ***!
\********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSignType = void 0;
exports.getSignType = function (cadesplugin, signType) {
switch (signType) {
case 'CAdES BES': {
return cadesplugin.CADESCOM_CADES_BES;
}
case 'CAdES-X Long Type 1': {
return cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1;
}
case 'CAdES T': {
return cadesplugin.CADESCOM_CADES_T;
}
case 'PKCS7': {
return cadesplugin.CADESCOM_PKCS7_TYPE;
}
}
};
/***/ }),
/***/ "./vendor/cadesplugin_api.js":
@ -6068,4 +6118,4 @@ exports._parseCertInfo = function (tagsTranslations, rawInfo) {
/******/ });
});
//# sourceMappingURL=crypto-pro-js.js.map
//# sourceMappingURL=crypto-pro-js-m.js.map

1
dist/crypto-pro-js-m.js.map vendored Normal file

File diff suppressed because one or more lines are too long

11
dist/crypto-pro-js-m.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/crypto-pro-js-m.min.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,7 +0,0 @@
// Type definitions for crypto-pro-js 2.3.3
// Project: crypto-pro-js
// Definitions by: Artem Vasilev https://github.com/kernusr
export as namespace cryptoPro;
export * from './api';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/helpers/getSignType.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export declare type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';
export declare const getSignType: (cadesplugin: any, signType: SignType) => any;

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta charset="UTF-8" />
<title>Пример использования cryptoPro</title>
</head>
<body>
@ -9,20 +9,22 @@
<fieldset>
<legend>Создание подписи</legend>
<label for="message">Подписываемое сообщение: *</label>
<br>
<textarea id="message" cols="80" rows="5" placeholder="Введите сообщение" autofocus required>Привет мир!</textarea>
<br><br>
<br />
<textarea id="message" cols="80" rows="5" placeholder="Введите сообщение" autofocus required>
Привет мир!</textarea
>
<br /><br />
<!--[if gte IE 10]><!-->
<label for="messageFile">Или файл для подписи:</label>
<br />
<input id="messageFile" type="file">
<input id="messageFile" type="file" />
<pre id="messageFileError"></pre>
<!--<![endif]-->
<hr>
<hr />
<label for="certificate">Сертификат: *</label>
<br>
<br />
<select id="certificate" tabindex="-1" required>
<option disabled selected>Не выбран</option>
</select>
@ -35,37 +37,40 @@
<pre id="certificateInfoError"></pre>
<label>Тип подписи: *</label>
<br>
<label><input type="radio" name="signatureType" value="attached">Совмещенная</label>
<br>
<label><input type="radio" name="signatureType" value="xml">XML</label>
<br>
<label><input type="radio" name="signatureType" value="detached" checked>Отделенная</label>
<br><br>
<br />
<label><input type="radio" name="signatureType" value="attached" />Совмещенная</label>
<br />
<label><input type="radio" name="signatureType" value="xml" />XML</label>
<br />
<label><input type="radio" name="signatureType" value="detached" checked />Отделенная</label>
<br /><br />
<hr>
<hr />
<button id="createSignature" type="submit" disabled>Создать подпись</button>
</fieldset>
<fieldset>
<legend>Результат</legend>
<label for="hash">Хеш (ГОСТ Р 34.11-2012 256 бит):</label><br>
<label for="hash">Хеш (ГОСТ Р 34.11-2012 256 бит):</label><br />
<textarea id="hash" cols="80" rows="5" placeholder="Не вычислен"></textarea>
<br>
<br />
<pre id="hashError"></pre>
<label for="signature">Подпись (PKCS7):</label><br>
<label for="signature">Подпись (PKCS7):</label><br />
<textarea id="signature" cols="80" rows="30" placeholder="Не создана"></textarea>
<pre id="signatureError"></pre>
<p>
Для
<a href="https://www.gosuslugi.ru/pgu/eds/"
<a
href="https://www.gosuslugi.ru/pgu/eds/"
target="_blank"
rel="nofollow noopener noreferrer"
title="Перейти к проверке подписи">проверки</a>
title="Перейти к проверке подписи"
>проверки</a
>
нужно создать файл со сгенерированной подписью в кодировке UTF-8 с расширением *.sgn
<br>
<br />
для отделенной подписи (или *.sig для совмещенной).
</p>
</fieldset>
@ -82,7 +87,7 @@
<script src="polyfills/find.js"></script>
<!-- Библиотека -->
<script src="dist/crypto-pro-js.js"></script>
<script src="dist/crypto-pro-js-m.js"></script>
<!-- Полифиллы для работы демо скриптов -->
<script src="polyfills/atob-btoa.js"></script>

View File

@ -1,8 +1,10 @@
import { SignType } from '../helpers/getSignType';
/**
* Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param signedMessage - подписанное сообщение
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
export declare const addAttachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer) => Promise<string>;
export declare const addAttachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, signType?: SignType) => Promise<string>;

View File

@ -1,9 +1,11 @@
import { SignType } from '../helpers/getSignType';
/**
* Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param signedMessage - подписанное сообщение
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
export declare const addDetachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string) => Promise<string>;
export declare const addDetachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string, signType?: SignType) => Promise<string>;

View File

@ -1,8 +1,10 @@
import { SignType } from '../helpers/getSignType';
/**
* Создает присоединенную подпись сообщения по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param message - подписываемое сообщение
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
export declare const createAttachedSignature: (thumbprint: string, unencryptedMessage: string | ArrayBuffer) => Promise<string>;
export declare const createAttachedSignature: (thumbprint: string, unencryptedMessage: string | ArrayBuffer, signType?: SignType) => Promise<string>;

View File

@ -1,8 +1,10 @@
import { SignType } from '../helpers/getSignType';
/**
* Создает отсоединенную подпись хеша по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
export declare const createDetachedSignature: (thumbprint: string, messageHash: string) => Promise<string>;
export declare const createDetachedSignature: (thumbprint: string, messageHash: string, signType?: SignType) => Promise<string>;

5
lib/crypto-pro-js-m.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
// Type definitions for crypto-pro-js-m 0.1.3
// Project: crypto-pro-js-m
// Definitions by: Serge Schekhovtsov https://github.com/schekhovtsov
export * from './api';

View File

@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./crypto-pro-js.ts");
/******/ return __webpack_require__(__webpack_require__.s = "./crypto-pro-js-m.ts");
/******/ })
/************************************************************************/
/******/ ({
@ -2229,14 +2229,16 @@ const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_ext
const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
const getSignType_1 = __webpack_require__(/*! ../helpers/getSignType */ "./helpers/getSignType.ts");
/**
* Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param signedMessage - подписанное сообщение
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
exports.addAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, signedMessage) => __awaiter(void 0, void 0, void 0, function* () {
exports.addAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, signedMessage, signType = 'PKCS7') => __awaiter(void 0, void 0, void 0, function* () {
const { cadesplugin } = window;
const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
return eval(_generateCadesFn_1._generateCadesFn(function addAttachedSignature() {
@ -2283,9 +2285,10 @@ exports.addAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbp
throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');
}
let signature;
const signTypeConst = getSignType_1.getSignType(cadesplugin, signType);
try {
void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, signTypeConst));
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, signTypeConst);
}
catch (error) {
console.error(error);
@ -2325,15 +2328,17 @@ const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_ext
const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
const getSignType_1 = __webpack_require__(/*! ../helpers/getSignType */ "./helpers/getSignType.ts");
/**
* Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param signedMessage - подписанное сообщение
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
exports.addDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, signedMessage, messageHash) => __awaiter(void 0, void 0, void 0, function* () {
exports.addDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, signedMessage, messageHash, signType = 'PKCS7') => __awaiter(void 0, void 0, void 0, function* () {
const { cadesplugin } = window;
const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
return eval(_generateCadesFn_1._generateCadesFn(function addDetachedSignature() {
@ -2381,12 +2386,10 @@ exports.addDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbp
throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');
}
let signature;
const signTypeConst = getSignType_1.getSignType(cadesplugin, signType);
try {
void (_generateCadesFn_1.__cadesAsyncToken__ +
cadesSignedData.VerifyHash(cadesHashedData, signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));
signature =
_generateCadesFn_1.__cadesAsyncToken__ +
cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.VerifyHash(cadesHashedData, signedMessage, signTypeConst));
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, signTypeConst);
}
catch (error) {
console.error(error);
@ -2850,14 +2853,16 @@ const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_ext
const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
const getSignType_1 = __webpack_require__(/*! ../helpers/getSignType */ "./helpers/getSignType.ts");
/**
* Создает присоединенную подпись сообщения по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param message - подписываемое сообщение
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, unencryptedMessage) => __awaiter(void 0, void 0, void 0, function* () {
exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, unencryptedMessage, signType = 'PKCS7') => __awaiter(void 0, void 0, void 0, function* () {
const { cadesplugin } = window;
const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
return eval(_generateCadesFn_1._generateCadesFn(function createAttachedSignature() {
@ -2904,8 +2909,9 @@ exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thu
throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');
}
let signature;
const signTypeConst = getSignType_1.getSignType(cadesplugin, signType);
try {
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, signTypeConst);
}
catch (error) {
console.error(error);
@ -2945,14 +2951,16 @@ const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_ext
const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
const getSignType_1 = __webpack_require__(/*! ../helpers/getSignType */ "./helpers/getSignType.ts");
/**
* Создает отсоединенную подпись хеша по отпечатку сертификата
*
* @param thumbprint - отпечаток сертификата
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
* @returns подпись в формате PKCS#7
* @param signType - тип подписи, может быть равен 'CAdES BES', 'CAdES-X Long Type 1', 'CAdES T', 'PKCS7'
* @returns подпись в формате signType
*/
exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, messageHash) => __awaiter(void 0, void 0, void 0, function* () {
exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, messageHash, signType = 'PKCS7') => __awaiter(void 0, void 0, void 0, function* () {
const { cadesplugin } = window;
const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
return eval(_generateCadesFn_1._generateCadesFn(function createDetachedSignature() {
@ -3000,10 +3008,9 @@ exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thu
throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');
}
let signature;
const signTypeConst = getSignType_1.getSignType(cadesplugin, signType);
try {
signature =
_generateCadesFn_1.__cadesAsyncToken__ +
cadesSignedData.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.SignHash(cadesHashedData, cadesSigner, signTypeConst);
}
catch (error) {
console.error(error);
@ -4239,10 +4246,10 @@ exports.SUBJECT_TAGS_TRANSLATIONS = [
/***/ }),
/***/ "./crypto-pro-js.ts":
/*!**************************!*\
!*** ./crypto-pro-js.ts ***!
\**************************/
/***/ "./crypto-pro-js-m.ts":
/*!****************************!*\
!*** ./crypto-pro-js-m.ts ***!
\****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
@ -4735,6 +4742,37 @@ exports._parseCertInfo = (tagsTranslations, rawInfo) => {
};
/***/ }),
/***/ "./helpers/getSignType.ts":
/*!********************************!*\
!*** ./helpers/getSignType.ts ***!
\********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSignType = void 0;
exports.getSignType = (cadesplugin, signType) => {
switch (signType) {
case 'CAdES BES': {
return cadesplugin.CADESCOM_CADES_BES;
}
case 'CAdES-X Long Type 1': {
return cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1;
}
case 'CAdES T': {
return cadesplugin.CADESCOM_CADES_T;
}
case 'PKCS7': {
return cadesplugin.CADESCOM_PKCS7_TYPE;
}
}
};
/***/ }),
/***/ "./vendor/cadesplugin_api.js":
@ -5494,4 +5532,4 @@ exports._parseCertInfo = (tagsTranslations, rawInfo) => {
/******/ });
});
//# sourceMappingURL=crypto-pro-js.js.map
//# sourceMappingURL=crypto-pro-js-m.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,5 +0,0 @@
// Type definitions for crypto-pro-js 2.3.3
// Project: crypto-pro-js
// Definitions by: Artem Vasilev https://github.com/kernusr
export * from './api';

File diff suppressed because one or more lines are too long

2
lib/helpers/getSignType.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export declare type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';
export declare const getSignType: (cadesplugin: any, signType: SignType) => any;

View File

@ -1,9 +1,9 @@
{
"name": "crypto-pro-js",
"version": "0.1.3",
"name": "crypto-pro-js-m",
"version": "0.1.4",
"description": "Асинхронный JavaScript API для работы с КриптоПРО ЭЦП Browser Plug-In. Forked from https://github.com/crypto-pro-web/crypto-pro-js",
"main": "./lib/crypto-pro-js.js",
"types": "./lib/crypto-pro-js.d.ts",
"main": "./lib/crypto-pro-js-m.js",
"types": "./lib/crypto-pro-js-m.d.ts",
"files": [
"lib/**/*",
"dist/**/*",
@ -33,7 +33,7 @@
},
"repository": {
"type": "git",
"url": "https://github.com/webmasterskaya/crypto-pro-js"
"url": "https://github.com/Schekhovtsov/crypto-pro-js-m"
},
"author": {
"name": "Serge Schekhovtsov",

View File

@ -1,6 +1,6 @@
export type SignType = 'CAdES BES' | 'CAdES-X Long Type 1' | 'CAdES T' | 'PKCS7';
export const getSignType = (cadesplugin: any, signType: SignType) => {
export const getSignType = (cadesplugin: any, signType: SignType): any => {
switch (signType) {
case 'CAdES BES': {
return cadesplugin.CADESCOM_CADES_BES;

View File

@ -14,7 +14,7 @@
]
},
"include": [
"./src/crypto-pro-js.ts"
"./src/crypto-pro-js-m.ts"
],
"exclude": [
"node_modules"