powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / отсоединенная подпись (CMS/PKCS #7)
7 сообщений из 7, страница 1 из 1
отсоединенная подпись (CMS/PKCS #7)
    #38870166
lmontek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как удалить вложенный сертификат из Detached подписи?
...
Рейтинг: 0 / 0
отсоединенная подпись (CMS/PKCS #7)
    #38870168
lmontek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создаю и добавляю подписи

автор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

список сертификатов для удаления подписи
автор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

как мне при удалении подписи удалить и сертификат из подписи?
...
Рейтинг: 0 / 0
отсоединенная подпись (CMS/PKCS #7)
    #38870247
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lmontek,

Не понял что вы хотите.
...
Рейтинг: 0 / 0
отсоединенная подпись (CMS/PKCS #7)
    #38870271
lmontek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttlmontek,

Не понял что вы хотите.

создаю отсоединенную подпись, подписываю двумя сертификатами.
потом удаляю одну подпись.
но signedCms.Certificates мне все равно показывает. что в файле подписи осталось два сертификата. как его изъять при удалении одной из подписей (при ошибочном подписании/пере подписании)
...
Рейтинг: 0 / 0
отсоединенная подпись (CMS/PKCS #7)
    #38870411
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lmontek,

подпиши ещё раз, делов-то. не думаю, что возня с ковырянием контейнера и его пере-сборкой тебе понравится.
...
Рейтинг: 0 / 0
отсоединенная подпись (CMS/PKCS #7)
    #38871096
lmontek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttlmontek,

подпиши ещё раз, делов-то. не думаю, что возня с ковырянием контейнера и его пере-сборкой тебе понравится.

как мне подсказали, .Net не поддерживает функцию удаления сертификата из файла подписи ( хреново. Ладно пусть там остается.
...
Рейтинг: 0 / 0
отсоединенная подпись (CMS/PKCS #7)
    #38871280
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lmontekhVosttlmontek,

подпиши ещё раз, делов-то. не думаю, что возня с ковырянием контейнера и его пере-сборкой тебе понравится.

как мне подсказали, .Net не поддерживает функцию удаления сертификата из файла подписи ( хреново. Ладно пусть там остается.

.NET вообще беден в этом смысле. поэтому приходится работать с Crypto API, а работать с Crypto API намного приятней не в C#, а в C++/CLI.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / отсоединенная подпись (CMS/PKCS #7)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]