27.07.2006 13:01:24Функция CryptSignMessage Ответов: 4
Дмитрий
Здравствуйте.
При вызове функции CryptSignMessage создается объект функции хеширования и в этой же функции он преобразуется на закрытом ключе отправителя.

У меня возник следующий вопрос: при этом преобразовании к нему добавляется описание подписанных данных?

Так как после подписи сообщения при просмотре файла через программу dumpASN1 после сертификата отправителя следует вот такая структура:
SET {
SEQUENCE {
INTEGER 1
SEQUENCE {
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER '1 2 840 113549 1 9 1'
IA5String 'info@cryptopro.ru'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER '2 5 4 6'
PrintableString 'RU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER '2 5 4 10'
PrintableString 'CRYPTO-PRO'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER '2 5 4 3'
PrintableString 'Test Center CRYPTO-PRO'
}
}
}
INTEGER
53 CB 7F E5 00 01 00 00 11 F3
}
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 2 2 9'
NULL
}
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 2 2 19'
NULL
}
OCTET STRING
96 07 3E 7C CC B5 9C 83 60 BE 4E E0 85 B6 78 3E
18 95 7B 7C 10 13 64 76 1C CB 0C CA F4 DE E2 09
B0 2E E3 78 B8 04 DF 3C CD 60 B0 B8 6D B0 1B C6
5E 28 FB 40 2E 09 53 4A 4B 6D 44 02 1B 9A 2E 7A
}
}
}
 
Ответы:
28.07.2006 7:30:54Дмитрий
Стоит добавить что последовательность
96 07 3E 7C CC B5 9C 83 60 BE 4E E0 85 B6 78 3E
18 95 7B 7C 10 13 64 76 1C CB 0C CA F4 DE E2 09
B0 2E E3 78 B8 04 DF 3C CD 60 B0 B8 6D B0 1B C6
5E 28 FB 40 2E 09 53 4A 4B 6D 44 02 1B 9A 2E 7A
является преобразованным хешом.
28.07.2006 11:20:59Kirill Sobolev
Вообще то эта структура (кроме последнего octet string) и есть информация о сертификате подписчика - его издатель и серийный номер.
Какое описание подписанных данных имеется ввиду?
28.07.2006 11:31:36Дмитрий
Ну вот например при использовании функций CPSignHash или CryptSignHash есть такой параметр как LPCWSTR Description значением которого является "Описание подписываемых данных, добавляемых к объекту hash ..." цитата из руководства программиста к Вашему CSP.
28.07.2006 15:14:58Kirill Sobolev
С помощью CryptSignMessage его задать нельзя.
Его вообще лучше не задавать.