Skip to content

Commit eba7288

Browse files
committed
readme - SignedData
1 parent 54c58b0 commit eba7288

1 file changed

Lines changed: 27 additions & 6 deletions

File tree

README.md

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,18 @@ composer require falseclock/advanced-cms
2121
Предыстория
2222
------------
2323
Когда в Казахстане и России стала активно внедряться Электронная цифровая подпись (ЭЦП), я с большой для себя неожиданностью обнаружил,
24-
что в PHP нет библиотек, позволяющих не только формализовать ASN.1 запись цифровой подписи в объект, но и буквально модифицировать её, путем добавления
24+
что в PHP нет библиотек, позволяющих не только формализовать ASN.1 запись цифровой подписи в объект, но и тем более модифицировать её, путем добавления
2525
OCSP проверок или TSP меток, удалить электронный контент, чтобы оставить только подписи или просто объединить две разные подписи одних и тех же данных.
2626
Отправной точкой стала библиотека [adapik/cms](https://github.com/Adapik/CMS), в которой на тот момент не было детального описания всех возможных полей и данных в
2727
CAdES. Так начался долгий путь чтения RFC и написания [нескольких тысяч строк кода](https://github.com/Adapik/CMS/graphs/contributors) чтобы полностью и
28-
безошибочно описать рекомендации в виде библиотеки. Но по договоренности с Александром Даниловым, мы решили, что изначальная библиотека будет работать
28+
детально описать рекомендации в виде библиотеки. Но по договоренности с Александром Даниловым, мы решили, что изначальная библиотека будет работать
2929
исключительно в режиме чтения, а все остальное, если я того желаю, могу сделать в виде отдельного пакета. Что, собственно, и было сделано.
3030

3131

3232
## Манипуляторы
3333

3434
* [EncapsulatedContentInfo](#EncapsulatedContentInfo)
35+
* [SignedData](#_SignedData_)
3536
* [OCSPRequest](#OCSPRequest)
3637
* [OCSPResponse](#OCSPResponse)
3738
* [OCSPResponseStatus](#OCSPResponseStatus)
@@ -40,7 +41,6 @@ CAdES. Так начался долгий путь чтения RFC и напи
4041
* [ResponseBytes](#ResponseBytes)
4142
* [RevocationValues](#RevocationValues)
4243
* [Signature](#Signature)
43-
* [SignedData](#_SignedData_)
4444
* [SignedDataContent](#SignedDataContent)
4545
* [SignerInfo](#SignerInfo)
4646
* [TBSRequest](#TBSRequest)
@@ -53,7 +53,8 @@ CAdES. Так начался долгий путь чтения RFC и напи
5353
* * *
5454

5555
# **EncapsulatedContentInfo**
56-
**EncapsulatedContentInfo** — Согласно [RFC5652](https://datatracker.ietf.org/doc/html/rfc5652#section-5.2) - место хранения подписанных данных.
56+
**EncapsulatedContentInfo** — Согласно [RFC5652](https://datatracker.ietf.org/doc/html/rfc5652#section-5.2) - место хранения подписанных данных. Хранить
57+
данные в слепке ЭЦП не обязательное условие, следовательно, их можно удалять или внедрять.
5758

5859
## **Методы**
5960

@@ -68,7 +69,8 @@ public function setEContent(OctetString $octetString): self
6869
```
6970

7071
В случае, если подписанные данные и сами подписи хранятся раздельно, но необходимо сформировать полный CMS файл, данный метод позволяет
71-
внедрить содержание в подпись.
72+
внедрить содержание в подпись. Следует учесть, что метод не проверяет хэш файла и хэш из подписи, так как алгоритм хеширования может не входить
73+
в стандартную поставку openssl.
7274

7375
* * *
7476

@@ -86,4 +88,23 @@ public function unSetEContent(): self
8688
хранить данные и подписи, вполне разумно их разделять, особенно, если данные очень большого объема, так как их всегда можно проверить по хэшу,
8789
который использовался в подписи.
8890

89-
* * *
91+
* * *
92+
93+
# **SignedData**
94+
**SignedData** — объединение двух цифровых подписей в единую.
95+
96+
## **Методы**
97+
98+
### **mergeCMS**
99+
100+
mergeCMS — объединение дайджестов, публичных и отозванных сертификатов, а также самих подписей
101+
102+
#### Описание
103+
104+
```php
105+
public function mergeCMS(SignedData $signedData): SignedData
106+
```
107+
108+
Метод позволяет собрать несколько CMS файлов в единый, если один и тот же файл был подписан разными системами, либо если каждая подпись хранится отдельно.
109+
110+
* * *

0 commit comments

Comments
 (0)