From 99558e33ffe18706219c0461b9409b58101aaaf0 Mon Sep 17 00:00:00 2001 From: va4es2 Date: Sat, 27 Apr 2024 14:51:44 +0300 Subject: [PATCH] =?UTF-8?q?feat(cryptopro-cades):=20=D0=92=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=20=D1=81=D0=B5=D1=80=D1=82=D0=B8=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D1=82=D0=B0=20=D0=BF=D0=BE=20Skid=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=84=D0=B8=D0=BB?= =?UTF-8?q?=D1=8C=D1=82=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D0=B8=D1=82=D0=B5=D0=BB=D1=8F=D0=BC=20=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=BE=D0=B3=D0=BE=20=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B0=20(#48)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bug(cryptopro-cades): Поправил корректное определение наличия контейнера закрытого ключа в системе. feat(cryptopro-cades): Добавил необязательные параметры функциям получения списка сертификатов, подписи, подписи хэша файла для гибкости работы с ними. * bug(cryptopro-cades): Поиск ключа по Skid всегда вызывал поиск по всем носителям с проверкой закрытого ключа, даже если не требуется. Добавил параметры вызова функции поиска сертификата для гибкости. --------- Co-authored-by: va4es2 --- packages/cryptopro-cades/src/api/findCertificateBySkid.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/cryptopro-cades/src/api/findCertificateBySkid.ts b/packages/cryptopro-cades/src/api/findCertificateBySkid.ts index af172ed..3de9540 100644 --- a/packages/cryptopro-cades/src/api/findCertificateBySkid.ts +++ b/packages/cryptopro-cades/src/api/findCertificateBySkid.ts @@ -1,4 +1,5 @@ import type { Certificate } from '../Certificate'; +import { STORE_TYPE } from '../constants'; import { CryptoError } from '../errors'; import { getCertificates } from './../api'; @@ -6,11 +7,15 @@ import { getCertificates } from './../api'; /** * Поиск в хранилищах сертификата. * @param {string} subjectKeyId -идентификатор ключа субъекта. + * @param {STORE_TYPE} storeType в каком хранилище требуется поискать сертификат (из токена, реестра, все...). + * @param {boolean} [checkPrivateKey=false] проводить проверку наличия закрытого ключа. * @throws {CryptoError} в случае ошибки. * @returns {@Promise} сертификат. */ export async function findCertificateBySkid( subjectKeyId: string, + storeType: STORE_TYPE = STORE_TYPE.ALL, + checkPrivateKey: boolean = false, ): Promise { if (!subjectKeyId) { const errorMessage = @@ -20,10 +25,11 @@ export async function findCertificateBySkid( } try { - return (await getCertificates()).find( + return (await getCertificates(storeType, false, checkPrivateKey)).find( (c) => c.subjectKeyId == subjectKeyId, ); } catch (err) { throw CryptoError.createCadesError(err, 'Ошибка получения сертификата.'); } } +