Статус: Участник
Группы: Участники
Зарегистрирован: 17.12.2014(UTC) Сообщений: 20   Сказал «Спасибо»: 3 раз
|
как удалить вложенный сертификат из Detached подписи?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,433  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 737 раз в 634 постах
|
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.12.2014(UTC) Сообщений: 20   Сказал «Спасибо»: 3 раз
|
создаю и добавляю подписи Цитата:Private Function SignBytes(ByVal SrcBytes As Byte(), Certificate As X509Certificate2) As Byte() Dim Result As Byte() = Nothing If SrcBytes IsNot Nothing AndAlso SrcBytes.Length > 0 AndAlso Certificate IsNot Nothing Then Try Dim contentInfo As New ContentInfo(SrcBytes) Dim signedCms As New SignedCms(contentInfo, True) Dim cmsSigner As New CmsSigner(Certificate) cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly cmsSigner.SignedAttributes.Add(New Pkcs9SigningTime) signedCms.ComputeSignature(cmsSigner, False) Result = signedCms.Encode() Catch ex As Exception Throw New Exception(ex.Message) Result = Nothing End Try End If Return Result End Function Public Function SignBytesAdd(ByVal SignedData As Byte(), ByVal SrcBytes As Byte(), ByVal Certificate As X509Certificate2) As Byte() Dim Result As Byte() = Nothing If SignedData IsNot Nothing AndAlso SignedData.Length > 0 AndAlso SrcBytes IsNot Nothing AndAlso SrcBytes.Length > 0 AndAlso Certificate IsNot Nothing Then Try Dim contentInfo As New ContentInfo(SrcBytes) Dim SignedCms As New SignedCms(contentInfo, True) SignedCms.Decode(SignedData) Dim CmsSigner As New CmsSigner(Certificate) cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly CmsSigner.SignedAttributes.Add(New Pkcs9SigningTime) SignedCms.ComputeSignature(CmsSigner, False) Result = SignedCms.Encode() Catch ex As Exception Throw New Exception(ex.Message) Result = Nothing End Try End If Return Result End Function после этого удаляю одну из подписей Цитата:Public Function CertificateRemove(ByVal SignData As Byte(), CertCol As X509Certificate2Collection) As Byte() Try ' Декодируем сообщение Dim signedCms As new SignedCms signedCms.Decode(SignData) For Each si As SignerInfo In signedCms.SignerInfos If CertCol.Contains(si.Certificate) Then signedCms.RemoveSignature(si) Next Return signedCms.Encode()
Catch ex As Exception Throw New Exception(ex.Message) Return Nothing End Try End Function как мне при удалении подписи удалить и сертификат из подписи. CmsSigner.IncludeOption Property используется при подписании или я не правильно все понял? или можно как-то использовать при удалении одной из подписей?
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.12.2014(UTC) Сообщений: 20   Сказал «Спасибо»: 3 раз
|
список сертификатов для удаления подписи Цитата:Public shared Function CertificateListFromSign(ByVal SignData As Byte()) As X509Certificate2Collection Try Dim signedCms As New SignedCms signedCms.Decode(SignData) Return signedCms.Certificates Catch ex As Exception Throw New Exception(ex.Message) Return Nothing End Try End Function
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,433  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 737 раз в 634 постах
|
Похоже, что .NET не предоставляет API для этого. |
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.12.2014(UTC) Сообщений: 20   Сказал «Спасибо»: 3 раз
|
Автор: maxdm  Похоже, что .NET не предоставляет API для этого. жаль (
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close