Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline bulkak  
#11 Оставлено : 24 июля 2018 г. 11:56:40(UTC)
bulkak

Статус: Новичок

Группы: Участники
Зарегистрирован: 10.07.2014(UTC)
Сообщений: 3
Российская Федерация

этот код нормально проверяет исходя из набора установленных корневых сертификатов УЦ:

Код:

        $filePath = '/tmp/' . $filename;
        file_put_contents($filePath,$signedData);
        exec('/opt/cprocsp/bin/amd64/cryptcp -verify ' . $filePath . ' -f ' . $filePath,$output,$result);
        $resultStr = trim(array_pop($output));
        if ($result === 0) {
            if ($resultStr == '[ReturnCode: 0]') {
                return true;
            }
        }
        $resultStr = $this->buildErrorResultString($resultStr,$output);


Этот код возвращает Invalid Signature. (0x80090006):

Код:

        $filePath = '/tmp/' . $filename;
        file_put_contents($filePath,$signedData);

        $sd = new \CPSignedData();
        $check = $sd->Verify(trim(file_get_contents($filePath)),1, VERIFY_SIGNATURE_AND_CERTIFICATE);

Отредактировано пользователем 24 июля 2018 г. 17:29:45(UTC)  | Причина: Не указана

Offline cross  
#12 Оставлено : 24 июля 2018 г. 12:21:09(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Давайте все таки по порядку разбираться.
1. echo "..." > file вам добавить перевод строки в файл. При подписи на странице перевода строки нет. Если хочется записать строку в файл без перевода строки то нужен флаг -n.
2. У функции Verify второй и третий параметры это вид подписи "присоединенная или отделенная" третий параметр это флаги проверки.
Вы же пытаетесь передать $check = $sd->Verify($sgn, CADES_BES,1);
CADES_BES это тип подписи который описан в стандарте на CMS Advanced Electronic Signature. Подписи такого типа могут быть как "присоединенные" так и "отделенные"(detached)
В третий параметр задаете 1 - что вы хотите этим передать?

Как только вы систематически исправите эти ошибки у вас и совпадут подписи.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Slavenin  
#13 Оставлено : 24 июля 2018 г. 12:42:46(UTC)
Slavenin

Статус: Участник

Группы: Участники
Зарегистрирован: 29.06.2018(UTC)
Сообщений: 27
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
я изменил php код, см сообщение выше.

Код:
->| echo -n 'Hello World' > test.txt
->| /opt/cprocsp/bin/amd64/cryptcp -nochain -vsignf -mroot test.txt 
CryptCP 4.0 (c) "Crypto-Pro", 2002-2017.
Command prompt Utility for file signature and encryption.

Certificates found: 2
Folder './':
test.txt... Signature verifying...     
    
Signer: RU, tests, etst, test, test, Максим, m****om
Skipping the signature due to signer certificate is not in certificate criterion.
Error: Signature.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/CPCrypt/DSign.cpp:851: 0x200001F9
[ErrorCode: 0x200001f9]
->| /opt/cprocsp/bin/amd64/cryptcp -nochain -vsignf -mroot test.txt -f test.txt.sgn 
CryptCP 4.0 (c) "Crypto-Pro", 2002-2017.
Command prompt Utility for file signature and encryption.

Certificates found: 4
Folder './':
test.txt... Signature verifying...     
    
Signer: RU, tests, etst, test, test, Максим, m****m
Error: ������������ �������./dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/CPCrypt/DSign.cpp:743: 0x80090006
Error: Signature.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/CPCrypt/DSign.cpp:851: 0x200001F9
[ErrorCode: 0x200001f9]


Далее. Для чистоты эксперимента я сделал новый файл. Закодировал его консольной утилитой и браузером. Подписи получились разные...
Консольная валидируется. Браузерная нет.
Вот этот test.doc (9kb) загружен 3 раз(а).
В консоли у меня получилось:
Код:
$ /opt/cprocsp/bin/amd64/cryptcp -signf -cadesbes  -dn mbarulin test.doc 
CryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2017.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:RU, tests, etst, test, test, Максим, mba***om
Действителен с 02.07.2018 12:03:07 по 02.10.2018 12:13:07

Цепочки сертификатов проверены.
Папка './':
test.doc... Подпись данных...    
    
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]

$ cat test.doc.sgn                                                      
MIAGCSqGSIb3DQEHAqCAMIACAQExDjAMBggqhQMHAQECAwUAMIAGCSqGSIb3DQEH
AQAAMYIC1jCCAtICAQEwgZYwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlw
dG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoT
DkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVy
IDICExIAKlqpr4vojNbqU+EAAAAqWqkwDAYIKoUDBwEBAgMFAKCCAZMwGAYJKoZI
hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTgwNzI0MDkxMTU1
WjBPBgkqhkiG9w0BCQQxQgRAS5IjxrM256pB9O4Ii4O1oVu1TqYx/IMJ1Gmi7X02
xnDTZCSy6aqHxlerPSztzwT3MlBOyrIKXr7UDAz/wXqRXDCCAQYGCyqGSIb3DQEJ
EAIvMYH2MIHzMIHwMIHtMAoGCCqFAwcBAQIDBEA9F+E1p8IpH7R+9GO5W77HO+Rq
c34LMR3weULnzP3kz8/asAuwCTUv/eBMLeAIdMN809g7BYVXGYU7pL1cE1cBMIGc
MIGEpIGBMH8xIzAhBgkqhkiG9w0BCQEWFHN1cHBvcnRAY3J5cHRvcHJvLnJ1MQsw
CQYDVQQGEwJSVTEPMA0GA1UEBxMGTW9zY293MRcwFQYDVQQKEw5DUllQVE8tUFJP
IExMQzEhMB8GA1UEAxMYQ1JZUFRPLVBSTyBUZXN0IENlbnRlciAyAhMSACpaqa+L
6IzW6lPhAAAAKlqpMAwGCCqFAwcBAQECBQAEgYBPgWJ0vwdtzpJk5G72Y6A0ydH0
Ze5qcRFrECGib3g2BkJQxTZy2FzZEa5K+iIO8HVMV0ZZRwLImin6PQ+TfX9KuiGN
QPOofEsv0ty2r7RjoXhPptZbofJmgXsx40uv+77UPIrhBLUVNkl0TOiQy7EQu/vH
czAkf9k7ML9Kk39mSQAAAAAAAA==


Из браузера (функция)
Код:
MIIG1AYJKoZIhvcNAQcCoIIGxTCCBsECAQExDjAMBggqhQMHAQECAwUAMAsGCSqGSIb3DQEHAaCC
A8MwggO/MIIDbqADAgECAhMSACpaqa+L6IzW6lPhAAAAKlqpMAgGBiqFAwICAzB/MSMwIQYJKoZI
hvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2Nv
dzEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMTGENSWVBUTy1QUk8gVGVzdCBDZW50
ZXIgMjAeFw0xODA3MDIxMjAzMDdaFw0xODEwMDIxMjEzMDdaMIGEMSEwHwYJKoZIhvcNAQkBFhJt
YmFydWxpbkBnbWFpbC5jb20xFTATBgNVBAMMDNCc0LDQutGB0LjQvDENMAsGA1UECwwEdGVzdDEN
MAsGA1UECgwEdGVzdDENMAsGA1UEBwwEZXRzdDEOMAwGA1UECAwFdGVzdHMxCzAJBgNVBAYTAlJV
MIGqMCEGCCqFAwcBAQECMBUGCSqFAwcBAgECAQYIKoUDBwEBAgMDgYQABIGAUoaCGDeXEjRGy8Y/
nIMB4C6gHA838lcNAwrAxwMTZ3aKvomnP303158hIRkzHZm2XaMDVWLyvCEG154wCYFd69BmmGOx
vF52ZajTMZR8JAg0+I60J2dQT3G4iP2W4GBy94G/JqP4BrDj4AR+Xax/yAIxfzQdnE75z//n07PH
OiujggFxMIIBbTAPBgNVHQ8BAf8EBQMDB/AAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQW
BBQFlEGCWyJA+50UozxbgMajAv4ITTAfBgNVHSMEGDAWgBQVMXywjRreZtcVnElSlxckuQF6gzBZ
BgNVHR8EUjBQME6gTKBKhkhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0NS
WVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMi5jcmwwgakGCCsGAQUFBwEBBIGcMIGZMGEGCCsG
AQUFBzAChlVodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAx
NF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIuY3J0MDQGCCsGAQUFBzABhihodHRwOi8v
dGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBABI3DQccvXtEbfcO
zhD3MMzvBKUvCsB0P92TFOTx0K9KAlvei/chybjRi2jrC0PHlGqqWsS4/SZ5yCw5wUpmLjkxggLW
MIIC0gIBATCBljB/MSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkGA1UE
BhMCUlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMT
GENSWVBUTy1QUk8gVGVzdCBDZW50ZXIgMgITEgAqWqmvi+iM1upT4QAAACpaqTAMBggqhQMHAQEC
AwUAoIIBkzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xODA3MjQw
OTI2MzNaME8GCSqGSIb3DQEJBDFCBED6cgwfGdpbxS84oybqK3cPl04B2SihubuahJxwfzHYHCq9
wcfIRedcjBKmxGNJFNDxrP3bQuqLNnAMSRh2FQmtMIIBBgYLKoZIhvcNAQkQAi8xgfYwgfMwgfAw
ge0wCgYIKoUDBwEBAgMEQD0X4TWnwikftH70Y7lbvsc75GpzfgsxHfB5QufM/eTPz9qwC7AJNS/9
4Ewt4Ah0w3zT2DsFhVcZhTukvVwTVwEwgZwwgYSkgYEwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9y
dEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNS
WVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAKlqpr4vo
jNbqU+EAAAAqWqkwDAYIKoUDBwEBAQIFAASBgEbenAd+7P9xgl2RiGmk3LP9UbXGHWFnHJhLLaEb
wZHrJoCQbS00XQv87dGqjY+TB2ihOVpyDE1G752ufTpBic8XUDj0DejycsPRW4Xq7t4TpkyF+HoH
o/t6zu0JBkUtXvphgYFXIOI2C3/B9DI5ciJncjBDUFQ3iP91m0IVBZkf



PS
Вся проблема в отсутствии нормальной документации с примерами.
"Например, вам надо проверить эцп из браузера на сервере? Делаете так: в браузере такая-то функция, на сервере такой-то код проверки в консоли и на языке таком-то. В файлы на сервере для корректной проверки надо положить то-то и то-то в таком-то виде."
А сейчас есть разрозненные обрывки кода в документации родом откуда-то из 90-х. Доки по консольной утилите я не нашёл вообще нигде. Есть ссылка на некий пдф вервии 3,6, но она не работает...
Вы выдели документацию, например яндекса? Там примеров больше, чем описания кода. Все-таки вам платят нехилые деньги за ваши продукты!
Была бы нормальная дока и не надо было бы писать тут километровые сообщения и ждать пока кто-то ответит. А может, и не ответит...

Отредактировано пользователем 24 июля 2018 г. 12:53:47(UTC)  | Причина: Не указана

Offline cross  
#14 Оставлено : 24 июля 2018 г. 18:06:49(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Slavenin, как то у вас файлик который вы приложили не совпадает с теми данными что подписывали.
Качаем ваш файлик, и смотрим его хэш.
Цитата:

/opt/cprocsp/bin/amd64/cpverify -mk ~/Downloads/test.doc -inverted_halfbytes 0
B34EEF6BEA1898026586CFE09B6B2C624F1514C31F1C4D3377864AF43EBADFED

Берем обе ваши подписи и сохраняем в файл. Далее декодируем из base64 формата.
Цитата:

cat /tmp/cryptcp
MIAGCSqGSIb3DQEHAqCAMIACAQExDjAMBggqhQMHAQECAwUAMIAGCSqGSIb3DQEH
AQAAMYIC1jCCAtICAQEwgZYwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlw
dG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoT
DkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVy
IDICExIAKlqpr4vojNbqU+EAAAAqWqkwDAYIKoUDBwEBAgMFAKCCAZMwGAYJKoZI
hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTgwNzI0MDkxMTU1
WjBPBgkqhkiG9w0BCQQxQgRAS5IjxrM256pB9O4Ii4O1oVu1TqYx/IMJ1Gmi7X02
xnDTZCSy6aqHxlerPSztzwT3MlBOyrIKXr7UDAz/wXqRXDCCAQYGCyqGSIb3DQEJ
EAIvMYH2MIHzMIHwMIHtMAoGCCqFAwcBAQIDBEA9F+E1p8IpH7R+9GO5W77HO+Rq
c34LMR3weULnzP3kz8/asAuwCTUv/eBMLeAIdMN809g7BYVXGYU7pL1cE1cBMIGc
MIGEpIGBMH8xIzAhBgkqhkiG9w0BCQEWFHN1cHBvcnRAY3J5cHRvcHJvLnJ1MQsw
CQYDVQQGEwJSVTEPMA0GA1UEBxMGTW9zY293MRcwFQYDVQQKEw5DUllQVE8tUFJP
IExMQzEhMB8GA1UEAxMYQ1JZUFRPLVBSTyBUZXN0IENlbnRlciAyAhMSACpaqa+L
6IzW6lPhAAAAKlqpMAwGCCqFAwcBAQECBQAEgYBPgWJ0vwdtzpJk5G72Y6A0ydH0
Ze5qcRFrECGib3g2BkJQxTZy2FzZEa5K+iIO8HVMV0ZZRwLImin6PQ+TfX9KuiGN
QPOofEsv0ty2r7RjoXhPptZbofJmgXsx40uv+77UPIrhBLUVNkl0TOiQy7EQu/vH
czAkf9k7ML9Kk39mSQAAAAAAAA==
cross@cross7:~$ cat /tmp/br
MIIG1AYJKoZIhvcNAQcCoIIGxTCCBsECAQExDjAMBggqhQMHAQECAwUAMAsGCSqGSIb3DQEHAaCC
A8MwggO/MIIDbqADAgECAhMSACpaqa+L6IzW6lPhAAAAKlqpMAgGBiqFAwICAzB/MSMwIQYJKoZI
hvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2Nv
dzEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMTGENSWVBUTy1QUk8gVGVzdCBDZW50
ZXIgMjAeFw0xODA3MDIxMjAzMDdaFw0xODEwMDIxMjEzMDdaMIGEMSEwHwYJKoZIhvcNAQkBFhJt
YmFydWxpbkBnbWFpbC5jb20xFTATBgNVBAMMDNCc0LDQutGB0LjQvDENMAsGA1UECwwEdGVzdDEN
MAsGA1UECgwEdGVzdDENMAsGA1UEBwwEZXRzdDEOMAwGA1UECAwFdGVzdHMxCzAJBgNVBAYTAlJV
MIGqMCEGCCqFAwcBAQECMBUGCSqFAwcBAgECAQYIKoUDBwEBAgMDgYQABIGAUoaCGDeXEjRGy8Y/
nIMB4C6gHA838lcNAwrAxwMTZ3aKvomnP303158hIRkzHZm2XaMDVWLyvCEG154wCYFd69BmmGOx
vF52ZajTMZR8JAg0+I60J2dQT3G4iP2W4GBy94G/JqP4BrDj4AR+Xax/yAIxfzQdnE75z//n07PH
OiujggFxMIIBbTAPBgNVHQ8BAf8EBQMDB/AAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQW
BBQFlEGCWyJA+50UozxbgMajAv4ITTAfBgNVHSMEGDAWgBQVMXywjRreZtcVnElSlxckuQF6gzBZ
BgNVHR8EUjBQME6gTKBKhkhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0NS
WVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMi5jcmwwgakGCCsGAQUFBwEBBIGcMIGZMGEGCCsG
AQUFBzAChlVodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAx
NF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIuY3J0MDQGCCsGAQUFBzABhihodHRwOi8v
dGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBABI3DQccvXtEbfcO
zhD3MMzvBKUvCsB0P92TFOTx0K9KAlvei/chybjRi2jrC0PHlGqqWsS4/SZ5yCw5wUpmLjkxggLW
MIIC0gIBATCBljB/MSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkGA1UE
BhMCUlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMT
GENSWVBUTy1QUk8gVGVzdCBDZW50ZXIgMgITEgAqWqmvi+iM1upT4QAAACpaqTAMBggqhQMHAQEC
AwUAoIIBkzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xODA3MjQw
OTI2MzNaME8GCSqGSIb3DQEJBDFCBED6cgwfGdpbxS84oybqK3cPl04B2SihubuahJxwfzHYHCq9
wcfIRedcjBKmxGNJFNDxrP3bQuqLNnAMSRh2FQmtMIIBBgYLKoZIhvcNAQkQAi8xgfYwgfMwgfAw
ge0wCgYIKoUDBwEBAgMEQD0X4TWnwikftH70Y7lbvsc75GpzfgsxHfB5QufM/eTPz9qwC7AJNS/9
4Ewt4Ah0w3zT2DsFhVcZhTukvVwTVwEwgZwwgYSkgYEwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9y
dEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNS
WVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAKlqpr4vo
jNbqU+EAAAAqWqkwDAYIKoUDBwEBAQIFAASBgEbenAd+7P9xgl2RiGmk3LP9UbXGHWFnHJhLLaEb
wZHrJoCQbS00XQv87dGqjY+TB2ihOVpyDE1G752ufTpBic8XUDj0DejycsPRW4Xq7t4TpkyF+HoH
o/t6zu0JBkUtXvphgYFXIOI2C3/B9DI5ciJncjBDUFQ3iP91m0IVBZkf

cross@cross7:~$ /opt/cprocsp/bin/amd64/certmgr -decode -src /tmp/cryptcp -dest /tmp/b
Certmgr 1.1 (debug version) (c) "CryptoPro", 2007-2018.
program for managing certificates, CRLs and stores
[ErrorCode: 0x00000000]
cross@cross7:~$ /opt/cprocsp/bin/amd64/certmgr -decode -src /tmp/cryptcp -dest /tmp/b^C
cross@cross7:~$ /opt/cprocsp/bin/amd64/certmgr -decode -src /tmp/br -dest /tmp/b1
Certmgr 1.1 (debug version) (c) "CryptoPro", 2007-2018.
program for managing certificates, CRLs and stores
[ErrorCode: 0x00000000]

Далее используя dumpasn1 смотрим поле MessageDigest в котором указан хеш данных на которые полученна подпись.
У вас в случае cryptcp - 4B 92 .. 91 5C
В случае браузера - FA 72 .. 09 AD
Что ни как не совпадает с хешом от файла. ( B34EEF6BEA1898026586CFE09B6B2C624F1514C31F1C4D3377864AF43EBADFED )
Создал подпись как и вы с приложенного файла.
Цитата:

cross@cross7:~$ /opt/cprocsp/bin/amd64/cryptcp -signf -cadesbes -dn "Test Certificate" ~/Downloads/test.doc
CryptCP 5.0 (Debug version) (c) "Crypto-Pro", 2002-2017.
Command prompt Utility for file signature and encryption.
Parameters: -signf -cadesbes -dn Test Certificate /home/cross/Downloads/test.doc

The following certificate will be used:
RDN:Test Certificate
Valid from 02.03.2018 13:11:02 to 02.06.2018 13:21:02

Certificate chain is not checked for this certificate:
RDN:Test Certificate
Valid from 02.03.2018 13:11:02 to 02.06.2018 13:21:02

This certificate or one of the certificates in the certificate chain is not time valid.
Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?Y

Certificate chains are checked.
Folder '/home/cross/Downloads/':
/home/cross/Downloads/test.doc... Signing the data...

Signed message is created.
[ErrorCode: 0x00000000]
cross@cross7:~$ cat test.doc.sgn
MIAGCSqGSIb3DQEHAqCAMIACAQExDDAKBgYqhQMCAgkFADCABgkqhkiG9w0BBwEA
ADGCAk4wggJKAgEBMIGWMH8xIzAhBgkqhkiG9w0BCQEWFHN1cHBvcnRAY3J5cHRv
cHJvLnJ1MQswCQYDVQQGEwJSVTEPMA0GA1UEBxMGTW9zY293MRcwFQYDVQQKEw5D
UllQVE8tUFJPIExMQzEhMB8GA1UEAxMYQ1JZUFRPLVBSTyBUZXN0IENlbnRlciAy
AhMSACZPw7z5zN7TDE/gAAAAJk/DMAoGBiqFAwICCQUAoIIBUDAYBgkqhkiG9w0B
CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xODA3MjQxNTAxNTBaMC8G
CSqGSIb3DQEJBDEiBCCzTu9r6hiYAmWGz+CbayxiTxUUwx8cTTN3hkr0Prrf7TCB
5AYLKoZIhvcNAQkQAi8xgdQwgdEwgc4wgcswCAYGKoUDAgIJBCAekFJbA0KAYGk0
XDdLsSu0rzSRT/1bW/tyxhJKNNwLzDCBnDCBhKSBgTB/MSMwIQYJKoZIhvcNAQkB
FhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1v
c2NvdzEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMTGENSWVBUTy1Q
Uk8gVGVzdCBDZW50ZXIgMgITEgAmT8O8+cze0wxP4AAAACZPwzAKBgYqhQMCAhMF
AARA6XIkkjjenofqV2RgptaN9fpYLOwJeUj6xSZ/7/wMU3HNlCGb4Xv7+YmUZfkL
0Ez41vPuesKnUwTHc9b4ckKE2AAAAAAAAA==


Перекодировав из base64 в бинарный формат и посмотрев поле messageDigest у меня совпадает с файлом.
Цитата:

287 9: OBJECT IDENTIFIER messageDigest (1 2 840 113549 1 9 4)
: (PKCS #9)
<31 22>
298 34: SET {
<04 20>
300 32: OCTET STRING
: B3 4E EF 6B EA 18 98 02 .N.k....
: 65 86 CF E0 9B 6B 2C 62 e....k,b
: 4F 15 14 C3 1F 1C 4D 33 O.....M3
: 77 86 4A F4 3E BA DF ED
: }
: }

Что то с данными которые вы прикладываете и подписываете творится в промежутке между этими двумя действиями.

Отредактировано пользователем 24 июля 2018 г. 18:08:22(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline cross  
#15 Оставлено : 24 июля 2018 г. 18:15:52(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Зашел на страницу - https://www.cryptopro.ru...ge/cades_bes_sample.html
и подписал Hello World
Далее скопировал подпись в файл /tmp/test_page.sgn

Цитата:

cross@cross7:/tmp$ cat /tmp/test_page.sgn
MIIGoQYJKoZIhvcNAQcCoIIGkjCCBo4CAQExDDAKBgYqhQMCAgkFADAaBgkqhkiG9w0BBwGgDQQL
SGVsbG8gV29ybGSgggRgMIIB7TCCAZygAwIBAgIQJFj7calSYdEtXH8idAalKjAIBgYqhQMCAgMw
VzELMAkGA1UEBhMCUlUxFzAVBgNVBAoTDk9PTyBDcnlwdG8tUHJvMRYwFAYDVQQLEw1DYWRlcyBU
ZXN0aW5nMRcwFQYDVQQDEw5DYWRlc1Rlc3QgUm9vdDAeFw0wNTAxMDEwMDAwMDBaFw00NDExMDQw
MDAwMDBaMFcxCzAJBgNVBAYTAlJVMRcwFQYDVQQKEw5PT08gQ3J5cHRvLVBybzEWMBQGA1UECxMN
Q2FkZXMgVGVzdGluZzEXMBUGA1UEAxMOQ2FkZXNUZXN0IFJvb3QwYzAcBgYqhQMCAhMwEgYHKoUD
AgIjAQYHKoUDAgIeAQNDAARA3oRizuHpsT9YVIaNmLiEkjchgwObRUT+VhRP5VnkqXum/EXQBxN2
2xPPHTnzM5DZ9xspl7Z908BJ91WpPrreWaNCMEAwDgYDVR0PAQH/BAQDAgHmMA8GA1UdEwEB/wQF
MAMBAf8wHQYDVR0OBBYEFAdOPtl2NFkQ3mp8Cc3JECsj1RGRMAgGBiqFAwICAwNBABdcnXkcXd5x
JKi22C842RqAWuvqRrmheWPCWXw1C9UbZLVujJICKkRbW9v2CtOMCURpbM6TtaoeDLpDiGgkDBAw
ggJrMIICGqADAgECAgMPQkIwCAYGKoUDAgIDMFcxCzAJBgNVBAYTAlJVMRcwFQYDVQQKEw5PT08g
Q3J5cHRvLVBybzEWMBQGA1UECxMNQ2FkZXMgVGVzdGluZzEXMBUGA1UEAxMOQ2FkZXNUZXN0IFJv
b3QwHhcNMDUwMTAxMDAwMDAyWhcNMjQwMTAxMDAwMDAxWjBcMQswCQYDVQQGEwJSVTEXMBUGA1UE
CgwOT09PIENyeXB0by1Qcm8xFjAUBgNVBAsMDUNhZGVzIFRlc3RpbmcxHDAaBgNVBAMME0NhZGVz
VGVzdCBHb3N0IFVzZXIwYzAcBgYqhQMCAhMwEgYHKoUDAgIjAQYHKoUDAgIeAQNDAARA+j4ru0pm
WrTWFjiz+OWq8Flp3dB1btBnJe64jj6Eo8nuj9I+Y9wMyYRZMfIhWwnFIp5DPkclQdwaq7qtFSbg
UaOBxzCBxDAOBgNVHQ8BAf8EBAMCBeAwPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRw
Oi8vc3ViY2EtMS9vY3NwX3Jvb3Qvb2NzcC5zcmYwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL3N1
YmNhLTEvQ2VydEVucm9sbC9yb290LmNybDAfBgNVHSMEGDAWgBQHTj7ZdjRZEN5qfAnNyRArI9UR
kTAdBgNVHQ4EFgQUSbB2QPED8AgdFfInM6X7Aaf+TEkwCAYGKoUDAgIDA0EAoDRKnvGhRzcn2oYp
zjK9U/o13wwAEH6igLxxThoPIyyapCzgE3MxxvEm8A3dF3T362r60Qvb2Fcpl9zX1bg13DGCAfkw
ggH1AgEBMF4wVzELMAkGA1UEBhMCUlUxFzAVBgNVBAoTDk9PTyBDcnlwdG8tUHJvMRYwFAYDVQQL
Ew1DYWRlcyBUZXN0aW5nMRcwFQYDVQQDEw5DYWRlc1Rlc3QgUm9vdAIDD0JCMAoGBiqFAwICCQUA
oIIBNDAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xODA3MjQxNTA1
MzVaMB0GCisGAQQBgjdYAgExDwQNRG9jdW1lbnQgTmFtZTAvBgkqhkiG9w0BCQQxIgQgde0V2E34
QpHGf+B78jSsaekqnCo3juYvNCr3Oegp66kwgakGCyqGSIb3DQEJEAIvMYGZMIGWMIGTMIGQMAgG
BiqFAwICCQQg/P2uq3rWYJgM+Bjvk/IbdWtjiX4cMpDlX2AtBc0RdL4wYjBbpFkwVzELMAkGA1UE
BhMCUlUxFzAVBgNVBAoTDk9PTyBDcnlwdG8tUHJvMRYwFAYDVQQLEw1DYWRlcyBUZXN0aW5nMRcw
FQYDVQQDEw5DYWRlc1Rlc3QgUm9vdAIDD0JCMAoGBiqFAwICEwUABEBqCuVrXdGbux4Cc2fx666p
rsYKR9xTzroFmVDxivuTanMvMrd+CWMZ3qw2xm945P/5LD3sbQJ0nFSjX2tmuovU
(failed reverse-i-search)`exho': scp firefox_cryptopro_^Ctension_latest.xpi admin@astra:~/
cross@cross7:/tmp$ echo -n "Hello World" > /tmp/test_page
cross@cross7:/tmp$ /opt/cprocsp/bin/amd64/cryptcp -vsignf -f /tmp/test_page.sgn /tmp/test_page
CryptCP 5.0 (Debug version) (c) "Crypto-Pro", 2002-2017.
Command prompt Utility for file signature and encryption.
Parameters: -vsignf -f /tmp/test_page.sgn /tmp/test_page

Certificates found: 2
Certificate chains are checked.
Folder '/tmp/':
/tmp/test_page... Signature verifying...

Signer: CadesTest Gost User, Cades Testing, OOO Crypto-Pro, RU
Signature's verified.
[ErrorCode: 0x00000000]
cross@cross7:/tmp$
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Slavenin  
#16 Оставлено : 25 июля 2018 г. 11:19:39(UTC)
Slavenin

Статус: Участник

Группы: Участники
Зарегистрирован: 29.06.2018(UTC)
Сообщений: 27
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Ох уж этот жабаскрипт.... блин....
Исключил обработку бинарных данных и base64 на стороне клиента (не знаю кто косячит, но подозреваю, что либа для base64, так как хэши на сервере и клиенте одинаковых данных разительно отличаются, жаль нативное кодирование только с 10 осла работает...), отдаю с сервера сразу готовый base64 хэш.
И, о чудо, шарманка завелась.

Не на 100% но всё-таки.

В итоге php код выглядит так:
Код:
 public function verify($sgn, $data)
    {
        $data = base64_encode($data);

        try
        {
            $sd = new \CPSignedData();

            $sd->set_ContentEncoding(BASE64_TO_BINARY);
            $sd->set_Content($data);
            $sd->VerifyCades($sgn, CADES_BES, 1);
            return true;

        }
        catch(\Exception $e)
        {
           ;
        }

        return false;
    }


Хотя функция Verify по-прежнему ругается на Exception: Internal error. (0x80070490) не знаю, что ей надо...

В любом случае огромная благодарность @cross за помощь. Хотя, документацию вы бы все-таки подпилили бы ;)
Offline cross  
#17 Оставлено : 26 июля 2018 г. 14:39:33(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Если есть желание могу и с Verify() помочь :).
Документацию постараемся улучшить!
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Slavenin  
#18 Оставлено : 26 июля 2018 г. 14:57:26(UTC)
Slavenin

Статус: Участник

Группы: Участники
Зарегистрирован: 29.06.2018(UTC)
Сообщений: 27
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Автор: cross Перейти к цитате
Если есть желание могу и с Verify() помочь :).
Документацию постараемся улучшить!


Конечно есть, прежде всего не понятна разница между этими двумя методами. Ну и, конечно, что именно ему отдавать для проверки. Есть файл, подпись и открытый ключ.

PS
и ещё вопрос не совсем по теме:
попытался добыть атрибуты сертификата и подписанта:

Код:
public function getAttributes()
    {
        $sd = $this->data;
        dump($sd->get_Certificates()->Count());
        $cert = $sd->get_Certificates()->Item(1);
        dump(iconv('windows-1251', 'utf-8', $cert->GetInfo(CERT_INFO_SUBJECT_SIMPLE_NAME)));
        dump(iconv('windows-1251', 'utf-8', $cert->GetInfo(CERT_INFO_ISSUER_SIMPLE_NAME)));
//пишет не реализовано
//            dump($cert->GetInfo(CERT_INFO_SUBJECT_EMAIL_NAME));
//            dump($cert->GetInfo(CERT_INFO_ISSUER_EMAIL_NAME));
//            dump($cert->GetInfo(CERT_INFO_SUBJECT_UPN));
//            dump($cert->GetInfo(CERT_INFO_ISSUER_UPN));
//            dump($cert->GetInfo(CERT_INFO_SUBJECT_DNS_NAME));
//            dump($cert->GetInfo(CERT_INFO_ISSUER_DNS_NAME));

        $signer = $sd->get_Signers()->get_Item(1);
        $attrrsCnt = $signer->get_AuthenticatedAttributes()->get_Count();
        for ($i = 1; $i <= $attrrsCnt; $i++)
        {
            $attr = $signer->get_AuthenticatedAttributes()->get_Item($i);
            switch ($attr->get_Name())
            {
                case AUTHENTICATED_ATTRIBUTE_SIGNING_TIME:
                    $name = 'time';
                    break;
                case AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME:
                    $name = 'document name';
                    break;
                case AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION:
                    $name = 'document descr';
                    break;
                default:
                    $name = 'unknow';
            }

//выдаёт кучу кракозябр в непонятной кодировке
//ни один атрибут из 4 кроме времени не привязался к константе
            dump([$name, $attr->get_Value()]);
        }
    }
Offline cross  
#19 Оставлено : 27 июля 2018 г. 15:17:01(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
1. Метод Verify достался нам т.к. мы должны были соблюсти интерфейс CAPICOM.SignedData от MS. При прочих равных лучше всего использовать метод VerifyCades(). При вызове Verify данные подаются так же в свойство Content, а сам метод вот так вызывается
Verify(<подпись>, true (detached), константа CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE)

2. По поводу подписанных атрибутов. Value - это asn1 закодироване значение атрибута. В зависимости от типа атрибута это могут быть сильно разные данные.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline cross  
#20 Оставлено : 27 июля 2018 г. 15:18:23(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
case AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME:
case AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION:
Вот такие атрибуты появятся в подписи только если вы их сами явно добавили.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.