Статус: Участник
Группы: Участники
Зарегистрирован: 19.05.2008(UTC) Сообщений: 14 Откуда: Тольятти
|
Здравствуйте, подскажите, пожалуйста, как сделать или дайте направление. Необходимо с помощью JCP подписать, зашифровать сообщение, сохранить в файл (на подобие функции CryptoAPI - CryptSignAndEncryptMessage). Затем, необходимо, чтобы зашифрованное сообщение разбиралось с помощью функции CryptoApi – CryptDecryptAndVerifyMessageSignature.
Я предполагаю, что нужно рыть в сторону CMS (PKCS7). Посмотрел примеры, но там происходит только подпись сообщения и создание его обертки (PKCS7).
Подскажите куда смотреть, желательно примеры. Заранее благодарен
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.01.2008(UTC) Сообщений: 207
Поблагодарили: 3 раз в 3 постах
|
примеров к сожалению нет. советую прочитать rfc Cryptographic Message Syntax Encrypted-data Content Type Все необходимые классы есть в JCP_ASN.jar (package ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax)
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.05.2008(UTC) Сообщений: 14 Откуда: Тольятти
|
где можно найти описание классов ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.01.2008(UTC) Сообщений: 207
Поблагодарили: 3 раз в 3 постах
|
описания классов нет. Их названия и структура соответствуют функциям из стандарта CMS, основная часть создания CMS сообщения дана в виде примеров, вам остается разобраться только с данными и тем как их обработать(воспользовавшись примерами(хеш, подпись) и rfc). класс соответствующий Encrypted-data Content Type - ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.EncryptedData идентификатор задается: contentType = new Asn1ObjectIdentifier(new OID("1.2.840.113549.1.7.6).value);
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.05.2008(UTC) Сообщений: 14 Откуда: Тольятти
|
ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.EncryptedData encd = new EncryptedData();
encd.encryptedContentInfo.contentType = new Asn1ObjectIdentifier(new OID("1.2.840.113549.1.7.6").value);
!!!...несовместимые типы
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.01.2008(UTC) Сообщений: 207
Поблагодарили: 3 раз в 3 постах
|
вообще должно быть: ContentInfo all = new ContentInfo(); all.contentType = new Asn1ObjectIdentifier(new OID("1.2.840.113549.1.7.6").value); final EncryptedData ed = new EncryptedData(); all.content = ed; насколько я поняла из описания функции CryptSignAndEncryptMessage вам скорее всего нужно будет как то совместить SignedData() и EncryptedData()... как это делается на самом деле не скажу, нужно читать литературу. Отредактировано пользователем 19 мая 2008 г. 19:07:43(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.05.2008(UTC) Сообщений: 14 Откуда: Тольятти
|
Большое спасибо за ответы, но этого мало. Все так же непонятны назначение и применение: EncryptedData.encryptedContentInfo EncryptedData.encryptedContentInfo.contentType EncryptedData.encryptedContentInfo.encryptedContent EncryptedData.encryptedContentInfo.contentEncryptionAlgorithm EncryptedData.unprotectedAttrs EncryptedData.unprotectedAttrs.elements и т.д. выложите пример, пожалуйста Отредактировано пользователем 19 мая 2008 г. 19:36:13(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.01.2008(UTC) Сообщений: 207
Поблагодарили: 3 раз в 3 постах
|
читаем rfc 2315 пункт 11 (сначала создается объект SignedData затем EnvelopedData, все функции и праметры для данных типов описаны в rfc 2315 и 2630).
ps:будут примеры - выложу, а пока читаем...
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.05.2008(UTC) Сообщений: 14 Откуда: Тольятти
|
вопрос остается открытым
ContentInfo all = new ContentInfo(); all.contentType = new Asn1ObjectIdentifier(new OID("1.2.840.113549.1.7.6").value); - это идентификатор для EncryptedData, а для EnvelopedData какой? final EncryptedData ed = new EncryptedData(); all.content = ed ed.encryptedContentInfo.contentEncryptionAlgorithm = ? ed.encryptedContentInfo.contentType = ? ed.encryptedContentInfo.encryptedContent = "зашифрованное(подписанное сообщение в PKCS7)"; ed.originatorInfo - обязательно указывать? для чего может пригодиться? ed.recipientInfos - что сюда подставлять? ed.unprotectedAttrs - обязательно указывать? что сюда подставлять?
примерчиков бы)...
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.01.2008(UTC) Сообщений: 207
Поблагодарили: 3 раз в 3 постах
|
идентификаторы вообще написаны в стандарте. (для EnvelopedData 1.2.840.113549.1.7.3) как впрочем и все ваши вопросы (в стандарте все описано, какие поля обязательны какие нет и зачем они нужны) пока могу сказать что сначала делается SignedData, а затем то что получилось шифруется (-> encryptedContentInfo)
пример пишу...
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close