Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2020(UTC) Сообщений: 12  Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 3 раз
|
Здравствуйте. Вопрос не совсем по вашему продукту, но вдруг поможете. Подписываю документ для отправки в сервис РЕГИЗ. Валидация на той стороне говорит "Ошибка декодирования ЭП MO: В подписи отсутствует атрибут [1.2.840.113549.1.9.4]" Я так понял, это AES хэш подписи? Подскажите, этот атрибут должен содержаться в подписи/сертификате? Можно ли его посмотреть в ваших приложениях?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,677   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
Автор: Андрей Фомин  Здравствуйте. Вопрос не совсем по вашему продукту, но вдруг поможете. Подписываю документ для отправки в сервис РЕГИЗ. Валидация на той стороне говорит "Ошибка декодирования ЭП MO: В подписи отсутствует атрибут [1.2.840.113549.1.9.4]" Я так понял, это AES хэш подписи? Подскажите, этот атрибут должен содержаться в подписи/сертификате? Можно ли его посмотреть в ваших приложениях? Здравствуйте. Это подписанный атрибут: хеш подписываемых данных (алгоритм хеша связан с сертификатом подписанта). Вы используете pkcs#7 \ без подписанных атрибутов? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,677   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
 Snimok ehkrana ot 2020-12-17 14-11-44.png (45kb) загружен 54 раз(а).1.2.840.113549.1.9.4 = messageDigest |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2020(UTC) Сообщений: 12  Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 3 раз
|
Цитата:Вы используете pkcs#7 \ без подписанных атрибутов? Видимо, да. Алгоритм требуется CAdES. В CSP экспортировал сертификат в *.cer, открыл в ASN1Editor, там нет messageDigest и вообще ветки "CONTEXT SPECIFIC". Я пытаюсь понять, подписанные атрибуты должны содержаться в сертификате или генериться при создании подписи? Если генериться, то разве CSP провайдер не должен сам посчитать хэш и добавить нужные атрибуты к подписи?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,677   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
Автор: Андрей Фомин  Цитата:Вы используете pkcs#7 \ без подписанных атрибутов? Видимо, да. Алгоритм требуется CAdES. В CSP экспортировал сертификат в *.cer, открыл в ASN1Editor, там нет messageDigest и вообще ветки "CONTEXT SPECIFIC". Я пытаюсь понять, подписанные атрибуты должны содержаться в сертификате или генериться при создании подписи? Если генериться, то разве CSP провайдер не должен сам посчитать хэш и добавить нужные атрибуты к подписи? Это OID в подписанных атрибутах, в подписи. Цитата:то разве CSP провайдер не должен сам посчитать хэш и добавить нужные атрибуты к подписи Зависит от функций, также это можно отключать в реестре. Вы бы побольше информации предоставили. Какие именно используете функции. Для проверки - подпишите на демо-странице и посмотрите, в структуре должен быть этот OID в подписанных атрибутах. хеш: 66 6C F4 FB F7 4E C6 8A 66 E8 DD 3D 30 61 B0 33 75 68 CE 21 A1 04 54 1D 4D EE 03 F5 44 8C 29 AF  Snimok ehkrana ot 2020-12-17 16-47-49.png (39kb) загружен 20 раз(а). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2020(UTC) Сообщений: 12  Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 3 раз
|
Да, простите, что не уточнил. java8 + bouncycastle + advapi32.dll Создаю открепленную подпись (CAdES, ГОСТ Р 34.10-2012) для pdf файла. Примерно так Код:
File file = new File("test.pdf");
byte[] fileContent = FileUtils.readFileToByteArray(file);
Advapi32 lib = Native.loadLibrary("advapi32", Advapi32.class);
Advapi32Wrapper advapi32 = new Advapi32Wrapper(lib);
// провайдер, алиас контейнера, пароль
X509Certificate cert = advapi32.getCentificate("CRYPTOPROCSP", "alias", "password");
final byte[] hash = advapi32.CryptSignHashA(fileContent);
List<X509Certificate> certList = new ArrayList<>();
CMSTypedData msg = new CMSProcessableFile(file);
certList.add(cert);
Store<?> certs = new JcaCertStore(certList);
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
ContentSigner signer = new ContentSigner() {
@Override
public AlgorithmIdentifier getAlgorithmIdentifier() {
return new AlgorithmIdentifier(new ASN1ObjectIdentifier(cert.getSigAlgOID()));
}
@Override
public OutputStream getOutputStream() {
return new ByteArrayOutputStream();
}
@Override
public byte[] getSignature() {
return hash;
}
};
JcaDigestCalculatorProviderBuilder dcpb = new JcaDigestCalculatorProviderBuilder();
JcaSignerInfoGeneratorBuilder sigb = new JcaSignerInfoGeneratorBuilder(dcpb.build());
boolean hasNoSignedAttributes = true;
sigb.setDirectSignature(hasNoSignedAttributes);
SignerInfoGenerator g = sigb.build(signer, cert);
gen.addSignerInfoGenerator(g);
gen.addCertificates(certs);
CMSSignedData sigData = gen.generate(msg, false);
byte[] sig = sigData.getEncoded();
Она создается и проходит валидацию в программе "Инструменты КриптоПро" Но, видимо, в ней отсутствует атрибут [1.2.840.113549.1.9.4] ASN1 Editor полученный файл подписи не понимает. Судя по исходникам bouncycastle, hasNoSignedAttributes = false должен добавлять подписанные атрибуты, в т.ч. messageDigest, но так подпись получается невалидная, CSP говорит - "0x80090006: Неправильная подпись". Может, есть другой способ создания открепленной подписи с помощью CSP провайдера? В примерах JCP не нашел.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,677   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.06.2020(UTC) Сообщений: 12  Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 3 раз
|
Спасибо, этот декодер справился. Поменял флаг в коде, теперь создается подпись с атрибутом messageDigest  screen.png (27kb) загружен 28 раз(а).Не подскажете, почему теперь ее CSP не принимает?  screen2.png (25kb) загружен 22 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,677   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
приложить можете в архиве тестовый файл и подпись к нему?
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,677   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close