Skip to content

Commit

Permalink
feat(cryptopro-cades): В поиск сертификата по Skid добавлена фильтрац…
Browse files Browse the repository at this point in the history
…ия по носителям и проверкой закрытого ключа (#48)

* bug(cryptopro-cades): Поправил корректное определение наличия контейнера закрытого ключа в системе.
feat(cryptopro-cades): Добавил необязательные параметры функциям получения списка сертификатов, подписи, подписи хэша файла для гибкости работы с ними.

* bug(cryptopro-cades): Поиск ключа по Skid всегда вызывал поиск по всем носителям с проверкой закрытого ключа, даже если не требуется. Добавил параметры вызова функции поиска сертификата для гибкости.

---------

Co-authored-by: va4es2 <[email protected]>
  • Loading branch information
va4es2 and va4es2 authored Apr 27, 2024
1 parent 5e81ab8 commit 99558e3
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion packages/cryptopro-cades/src/api/findCertificateBySkid.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
import type { Certificate } from '../Certificate';
import { STORE_TYPE } from '../constants';
import { CryptoError } from '../errors';

import { getCertificates } from './../api';

/**
* Поиск в хранилищах сертификата.
* @param {string} subjectKeyId -идентификатор ключа субъекта.
* @param {STORE_TYPE} storeType в каком хранилище требуется поискать сертификат (из токена, реестра, все...).
* @param {boolean} [checkPrivateKey=false] проводить проверку наличия закрытого ключа.
* @throws {CryptoError} в случае ошибки.
* @returns {@Promise<Certificate | undefined>} сертификат.
*/
export async function findCertificateBySkid(
subjectKeyId: string,
storeType: STORE_TYPE = STORE_TYPE.ALL,
checkPrivateKey: boolean = false,
): Promise<Certificate | undefined> {
if (!subjectKeyId) {
const errorMessage =
Expand All @@ -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, 'Ошибка получения сертификата.');
}
}

0 comments on commit 99558e3

Please sign in to comment.