Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Lmontek  
#1 Оставлено : 2 февраля 2015 г. 13:47:18(UTC)
Lmontek

Статус: Участник

Группы: Участники
Зарегистрирован: 17.12.2014(UTC)
Сообщений: 20
Мужчина
Российская Федерация

Сказал «Спасибо»: 3 раз
как удалить вложенный сертификат из Detached подписи?
Offline Максим Коллегин  
#2 Оставлено : 2 февраля 2015 г. 20:39:21(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Знания в базе знаний, поддержка в центре поддержки
Offline Lmontek  
#3 Оставлено : 3 февраля 2015 г. 10:17:04(UTC)
Lmontek

Статус: Участник

Группы: Участники
Зарегистрирован: 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 используется при подписании или я не правильно все понял? или можно как-то использовать при удалении одной из подписей?
Offline Lmontek  
#4 Оставлено : 3 февраля 2015 г. 10:20:52(UTC)
Lmontek

Статус: Участник

Группы: Участники
Зарегистрирован: 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
Offline Максим Коллегин  
#5 Оставлено : 3 февраля 2015 г. 11:09:04(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Похоже, что .NET не предоставляет API для этого.
Знания в базе знаний, поддержка в центре поддержки
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
Lmontek оставлено 03.02.2015(UTC)
Offline Lmontek  
#6 Оставлено : 3 февраля 2015 г. 11:37:19(UTC)
Lmontek

Статус: Участник

Группы: Участники
Зарегистрирован: 17.12.2014(UTC)
Сообщений: 20
Мужчина
Российская Федерация

Сказал «Спасибо»: 3 раз
Автор: maxdm Перейти к цитате
Похоже, что .NET не предоставляет API для этого.


жаль (
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.