10.10.2006 17:48:36 | Извлечение данных из подписи | | Ответов: 11 |
|
Евгений | | |
|
Сразу хочю извиниться за возможно "детский" вопрос.
Хотелось бы узнать если есть электронный документ подписанный с помощью закрытого ключа. То можно ли по подписи на документе узнать средствами КриптоПро JCP кто автор подписи. (CN например получить). Чтобы потом на основании какого то извлеченного идентификатора можно было поискать на УЦ открытый сертификат для процедуры валидации.
PS а то хранилище доверенных сертификатов у пользователя не резиновое :(
Большое спасибо за ответы. |
|
Ответы:
|
11.10.2006 18:43:05 | Василий |
|
Тут всё зависит от того, как и какими средствами подпись делается. Если это просто 64 байта, полученные при подписи данных, то никакой информации о ключе и сертификате подписывающего нет. С другой стороны, сертификат подписывающего целиком можно включить в передаваемое сообщение. Либо только сведения о сертификате. Если формат сообщения pkcs7, так и будет. |
|
12.10.2006 9:45:31 | Евгений |
|
Большое спасибо за ответ.
А можно ли каким то образом не включая дополнительно в документ сертификат пользователя получить какую либо информацию из самой подписи? Что для этого надо сделать при работе с КриптоПро JCP |
|
13.10.2006 8:45:26 | Евгений |
|
позволю себе немного детализировать проблему:
клиенту приходит подписанный документ, и если контрагентов очень много то клиент о них не знает, о них всех знает только УЦ. А там в общем случае могут быть тысячи сертификатов. тоесть заправшивать их все с УЦ и пытаться провеить подпись окажеться очень длительным процессом. Тоесть каким то образом можно ли что то получить из подписанного документа, чтобы потом на основании этого получить нужный сертификат от УЦ.
И если можно хотелось бы узнать как это можно сделать средствами КриптоПро JCP.
Заранее блогадарю за ответ. |
|
13.10.2006 12:43:23 | Василий |
|
Собственно говоря, это не задача JCP - он этого не умеет. Вам нужно выбрать формат передаваемых сообщений - будет ли это pkcs7 или какой-то ваш собственный формат. Тогда данные о подписывающем можно будет добавить в само сообщение и на приёмной стороне добыть оттуда. Если сертификатов реально много, и не хочется ставить их локально, идеальным вариантом будет pkcs7 с включённым в сообщение сертификатом подписавшего. Тогда для проверки подписи можно будет использовать сертификат из самого сообщения.
В принципе, можно вообще обойтись без сертификатов - включать в сообщение только открытый ключ подписывающего (блоб PUBLICKEYBLOB). Для проверки подписи этого достаточно, правда, в этой схеме нет возможности проверить действительность (в юридическом смысле) ключа подписывающего без использования какого-то собственного механизма (например, самостоятельно вести БД действительных ключей). |
|
|
Файл подписан двумя подписями. Формат передаваемого сообщения pkcs7. Подскажите какими функциями можно воспользоваться чтобы вытянуть информацию о подписчике из подписи? |
|
20.09.2007 16:17:27 | Kirill Sobolev |
|
CryptMsg* |
|
|
Шутку понял. Смешно :)
А по конкретнее? |
|
|
MSDN рулит!!!
В CryptVerifyMessageSignature есть последний параметр, как раз то что мне нужно. |
|
20.09.2007 16:44:56 | Kirill Sobolev |
|
Смейтесь дальше :)
Когда надоест - поищите в MSDN Low-level Message functions.
CryptVerifyMessageSignature предназначена для проверки подписи, а не для извлечения ее параметров. И последний параметр там - сертификат подписчика, если он был найден. |
|
|
Ради эксперимента, я удалил из системы сертификат которым подписывал. При проверке файла функция CryptVerifyMessageSignature в последнем параметре возвратила данные этого (удаленного) сертификата. |
|
20.09.2007 17:24:44 | Kirill Sobolev |
|
По умолчанию она берет сертификат из подписи. |
|