Статус: Новичок
Группы: Участники
Зарегистрирован: 04.05.2022(UTC) Сообщений: 6  Сказал(а) «Спасибо»: 6 раз
|
Добрый день! Имеется ресурс, общение с которым производится по средствам JWT. Header представляет структуру Json кодированную в строку Base64. Signature представляет закодированную в Base64 ЭП по ГОСТ 34.10-2012 строку . ЭП имеет формат «detached PKCS #7». Для Jwt = Header.Signature Так вот когда я беру Header и в ручную его подписываю на сайте проверки плагинатогда формируется корректная строка и JWT токен принимается. Если же я формирую в скрипте python ( как в примере), то формируется не корректно и сервис ругается на невалидность подписи. смена pycades.CADESCOM_CADES_BES на pycades.CADESCOM_PKCS7_TYPE не помогает. СryptoPro 5.0, python 3.8, Ubuntu 20.04 Отредактировано пользователем 4 мая 2022 г. 17:01:15(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,223  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 290 раз в 270 постах
|
Добрый день! обратите внимание на статьют.е. примерно так Код:hashedData = pycades.HashedData()
hashedData.Algorithm = pycades.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256
hashedData.DataEncoding = pycades.CADESCOM_BASE64_TO_BINARY
with open('data.txt', 'rb') as binary_data_file:
content = base64.b64encode(binary_data_file.read()).decode()
hashedData.Hash(content)
|
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.05.2022(UTC) Сообщений: 6  Сказал(а) «Спасибо»: 6 раз
|
Не помогает. Различие в подписи генерируемой на сайте и при помощи модуля. Какие настройки надо указать, что бы генерировалась подпись как на сайте?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,223  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 290 раз в 270 постах
|
может им нужна сырая подпись RawSignatureвы пример подписи покажите какая им нужна |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.05.2022(UTC) Сообщений: 6  Сказал(а) «Спасибо»: 6 раз
|
Header представляет структуру Json кодированную в строку Base64. Payload – непосредственно сами данные сообщения (приведены данные для примера вида записи), представляет собой структуру XML кодированную в строку Base64. Signature представляет закодированную в Base64 ЭП по ГОСТ 34.10-2012 строку . ЭП имеет формат «detached PKCS #7». Для Jwt "Header.Payload.Signature" подписываемая последовательность представляет собой конкатенацию части Header и Payload разделенных символом точка "Header.Payload". Разделитель "." входит в последовательность. Вот инструкция по формированию JWT. У меня в первом запросе Payload нет, потому нужно подписать только Header. Я перевел Header в base64, и на странице формирую подпись, там формируется так как надо:
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 MBYGA1UECAwPNzcg0JzQvtGB0LrQstCwMRkwFwYDVQQHDBDQsy4g0JzQvtGB0LrQstCwMS4wLAYD VQQJDCXRg9C70LjRhtCwINCi0LLQtdGA0YHQutCw0Y8sINC00L7QvCA3MSwwKgYDVQQKDCPQnNC4 0L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQuDEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAx MRowGAYIKoUDA4EDAQESDDAwNzcxMDQ3NDM3NTEsMCoGA1UEAwwj0JzQuNC90LrQvtC80YHQstGP 0LfRjCDQoNC+0YHRgdC40LiCEE5tR4sm8n1lf3aOAlzj05MwgZgGA1UdHwSBkDCBjTAtoCugKYYn aHR0cDovL3JlZXN0ci1wa2kucnUvY2RwL2d1Y19nb3N0MTIuY3JsMC2gK6AphidodHRwOi8vY29t cGFueS5ydC5ydS9jZHAvZ3VjX2dvc3QxMi5jcmwwLaAroCmGJ2h0dHA6Ly9yb3N0ZWxlY29tLnJ1 L2NkcC9ndWNfZ29zdDEyLmNybDBDBggrBgEFBQcBAQQ3MDUwMwYIKwYBBQUHMAKGJ2h0dHA6Ly9y ZWVzdHItcGtpLnJ1L2NkcC9ndWNfZ29zdDEyLmNydDCB9QYFKoUDZHAEgeswgegMNNCf0JDQmtCc IMKr0JrRgNC40L/RgtC+0J/RgNC+IEhTTcK7INCy0LXRgNGB0LjQuCAyLjAMQ9Cf0JDQmiDCq9CT 0L7Qu9C+0LLQvdC+0Lkg0YPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAwrsM NdCX0LDQutC70Y7Rh9C10L3QuNC1IOKEliAxNDkvMy8yLzIvMjMg0L7RgiAwMi4wMy4yMDE4DDTQ l9Cw0LrQu9GO0YfQtdC90LjQtSDihJYgMTQ5LzcvNi8xMDUg0L7RgiAyNy4wNi4yMDE4MAoGCCqF AwcBAQMCA0EAHhzisSg+/JHx+H54KuuA8Wi3fjJQd6SYxWrmA+GHOZoCJgGHE1o8R3P5l60A69XG bXOj7rXs8tAB4dpgBLjLsjCCCfcwggmkoAMCAQICEQOnwWcA6q1+ukzbjznKKjAOMAoGCCqFAwcB AQMCMIIB6DEbMBkGCSqGSIb3DQEJARYMY2FAc2VydHVtLnJ1MRgwFgYFKoUDZAESDTExMTY2NzMw MDg1MzkxGjAYBggqhQMDgQMBARIMMDA2NjczMjQwMzI4MQswCQYDVQQGEwJSVTEzMDEGA1UECAwq NjYg0KHQstC10YDQtNC70L7QstGB0LrQsNGPINC+0LHQu9Cw0YHRgtGMMSEwHwYDVQQHDBjQldC6 0LDRgtC10YDQuNC90LHRg9GA0LMxUjBQBgNVBAkMSdGD0LvQuNGG0LAg0KPQu9GM0Y/QvdC+0LLR gdC60LDRjywg0LQuIDEzLCDQu9C40YLQtdGAINCQLCDQvtGE0LjRgSAyMDkg0JExbDBqBgNVBAoM Y9Ce0LHRidC10YHRgtCy0L4g0YEg0L7Qs9GA0LDQvdC40YfQtdC90L3QvtC5INC+0YLQstC10YLR gdGC0LLQtdC90L3QvtGB0YLRjNGOICLQodC10YDRgtGD0Lwt0J/RgNC+IjFsMGoGA1UEAwxj0J7Q sdGJ0LXRgdGC0LLQviDRgSDQvtCz0YDQsNC90LjRh9C10L3QvdC+0Lkg0L7RgtCy0LXRgtGB0YLQ stC10L3QvdC+0YHRgtGM0Y4gItCh0LXRgNGC0YPQvC3Qn9GA0L4iMB4XDTIxMTEyNDA2MTI0NloX DTIyMTEyNDA2MTc0N1owggHQMRUwEwYFKoUDZAQSCjM0NDQwNDgxNzYxIzAhBgkqhkiG9w0BCQEW FHRvbGthY2hldmE2M0BtYWlsLnJ1MRowGAYIKoUDA4EDAQESDDM0MzUxNjcwMTM4MzEWMBQGBSqF A2QDEgswNDc5ODYyODUyNDEYMBYGBSqFA2QBEg0xMDIzNDAzNDU3NDE3MRUwEwYDVQQMDAzQoNCV 0JrQotCe0KAxJTAjBgNVBAoMHNCk0JPQkdCe0KMg0JLQniAi0JLQk9CQ0KTQmiIxNzA1BgNVBAkM LtCf0KAt0JrQoiDQmNCcLiDQki7QmC4g0JvQldCd0JjQndCQLCDQlNCe0JwgNzgxGzAZBgNVBAcM EtCS0L7Qu9Cz0L7Qs9GA0LDQtDE1MDMGA1UECAwsMzQg0JLQvtC70LPQvtCz0YDQsNC00YHQutCw 0Y8g0L7QsdC70LDRgdGC0YwxCzAJBgNVBAYTAlJVMSowKAYDVQQqDCHQktC40LrRgtC+0YAg0KHR gtC10L/QsNC90L7QstC40YcxGTAXBgNVBAQMENCv0LrQuNC80L7QstC40YcxJTAjBgNVBAMMHNCk 0JPQkdCe0KMg0JLQniAi0JLQk9CQ0KTQmiIwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMH AQECAgNDAARA8cAZ1c6nRrPuQ0odfhFj8thiom9t4S7QhGItRXlPNnKlSmf4Jb0qK7oSt3jEYXdc m0AIRWeyafUzpjvGr3B7+aOCBTQwggUwMAwGBSqFA2RyBAMCAQEwDgYDVR0PAQH/BAQDAgTwMB8G A1UdEQQYMBaBFHRvbGthY2hldmE2M0BtYWlsLnJ1MBMGA1UdIAQMMAowCAYGKoUDZHEBMEIGA1Ud JQQ7MDkGCCsGAQUFBwMCBgcqhQMCAiIGBggrBgEFBQcDBAYHKoUDA4E5AQYIKoUDAwUKAgwGByqF AwMHCAEwggEQBggrBgEFBQcBAQSCAQIwgf8wNwYIKwYBBQUHMAGGK2h0dHA6Ly9wa2kuc2VydHVt LXByby5ydS9vY3NwcTIwMTIvb2NzcC5zcmYwOAYIKwYBBQUHMAGGLGh0dHA6Ly9wa2kyLnNlcnR1 bS1wcm8ucnUvb2NzcHEyMDEyL29jc3Auc3JmMEYGCCsGAQUFBzAChjpodHRwOi8vY2Euc2VydHVt LXByby5ydS9jZXJ0aWZpY2F0ZXMvc2VydHVtLXByby1xLTIwMjEuY3J0MEIGCCsGAQUFBzAChjZo dHRwOi8vY2Euc2VydHVtLnJ1L2NlcnRpZmljYXRlcy9zZXJ0dW0tcHJvLXEtMjAyMS5jcnQwKwYD VR0QBCQwIoAPMjAyMTExMjQwNjEyNDZagQ8yMDIyMTEyNDA2MTc0N1owggEzBgUqhQNkcASCASgw ggEkDCsi0JrRgNC40L/RgtC+0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyA0LjApDFMi0KPQtNC+ 0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA0L4g0KPQ piIg0LLQtdGA0YHQuNC4IDIuMAxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLR gdGC0LLQuNGPIOKEliDQodCkLzEyNC0zOTcxINC+0YIgMTUuMDEuMjAyMQxP0KHQtdGA0YLQuNGE 0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0zODY4INC+0YIg MjMuMDcuMjAyMDAjBgUqhQNkbwQaDBgi0JrRgNC40L/RgtC+0J/RgNC+IENTUCIwdwYDVR0fBHAw bjA3oDWgM4YxaHR0cDovL2NhLnNlcnR1bS1wcm8ucnUvY2RwL3NlcnR1bS1wcm8tcS0yMDIxLmNy bDAzoDGgL4YtaHR0cDovL2NhLnNlcnR1bS5ydS9jZHAvc2VydHVtLXByby1xLTIwMjEuY3JsMIIB XwYDVR0jBIIBVjCCAVKAFPahNBG0PswiWtbV5kUKTzdVj+7IoYIBLKSCASgwggEkMR4wHAYJKoZI hvcNAQkBFg9kaXRAbWluc3Z5YXoucnUxCzAJBgNVBAYTAlJVMRgwFgYDVQQIDA83NyDQnNC+0YHQ utCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxLjAsBgNVBAkMJdGD0LvQuNGG0LAg0KLQ stC10YDRgdC60LDRjywg0LTQvtC8IDcxLDAqBgNVBAoMI9Cc0LjQvdC60L7QvNGB0LLRj9C30Ywg 0KDQvtGB0YHQuNC4MRgwFgYFKoUDZAESDTEwNDc3MDIwMjY3MDExGjAYBggqhQMDgQMBARIMMDA3 NzEwNDc0Mzc1MSwwKgYDVQQDDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQuIIK GcoW/QAAAAAFizAdBgNVHQ4EFgQUKJcJcwcABobo533oxqY3QUixdF4wCgYIKoUDBwEBAwIDQQBx cLmrG3TN5cI1YLKK8mbw8YglrELO7kdRCQQL7XUO7FzmLgLOsrhQH4PM1MaqZkVpDyCzjl5X4Wqr OrtJIEEWMYIFSjCCBUYCAQEwggH/MIIB6DEbMBkGCSqGSIb3DQEJARYMY2FAc2VydHVtLnJ1MRgw FgYFKoUDZAESDTExMTY2NzMwMDg1MzkxGjAYBggqhQMDgQMBARIMMDA2NjczMjQwMzI4MQswCQYD VQQGEwJSVTEzMDEGA1UECAwqNjYg0KHQstC10YDQtNC70L7QstGB0LrQsNGPINC+0LHQu9Cw0YHR gtGMMSEwHwYDVQQHDBjQldC60LDRgtC10YDQuNC90LHRg9GA0LMxUjBQBgNVBAkMSdGD0LvQuNGG 0LAg0KPQu9GM0Y/QvdC+0LLRgdC60LDRjywg0LQuIDEzLCDQu9C40YLQtdGAINCQLCDQvtGE0LjR gSAyMDkg0JExbDBqBgNVBAoMY9Ce0LHRidC10YHRgtCy0L4g0YEg0L7Qs9GA0LDQvdC40YfQtdC9 0L3QvtC5INC+0YLQstC10YLRgdGC0LLQtdC90L3QvtGB0YLRjNGOICLQodC10YDRgtGD0Lwt0J/R gNC+IjFsMGoGA1UEAwxj0J7QsdGJ0LXRgdGC0LLQviDRgSDQvtCz0YDQsNC90LjRh9C10L3QvdC+ 0Lkg0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+0YHRgtGM0Y4gItCh0LXRgNGC0YPQvC3Qn9GA0L4i AhEDp8FnAOqtfrpM2485yiowDjAKBggqhQMHAQECAqCCAuIwGAYJKoZIhvcNAQkDMQsGCSqGSIb3 DQEHATAcBgkqhkiG9w0BCQUxDxcNMjIwNTA2MDU0NzA0WjAdBgorBgEEAYI3WAIBMQ8EDURvY3Vt ZW50IE5hbWUwLwYJKoZIhvcNAQkEMSIEICJWSZyvooDmCq0C7C5Szt0vlnR9lxuffx2LkO0R42rN MIICVgYLKoZIhvcNAQkQAi8xggJFMIICQTCCAj0wggI5MAoGCCqFAwcBAQICBCAOqz8qb8rEqEsH i+9XUyeS+dl5GYmaL+WniWcLapYAujCCAgcwggHwpIIB7DCCAegxGzAZBgkqhkiG9w0BCQEWDGNh QHNlcnR1bS5ydTEYMBYGBSqFA2QBEg0xMTE2NjczMDA4NTM5MRowGAYIKoUDA4EDAQESDDAwNjY3 MzI0MDMyODELMAkGA1UEBhMCUlUxMzAxBgNVBAgMKjY2INCh0LLQtdGA0LTQu9C+0LLRgdC60LDR jyDQvtCx0LvQsNGB0YLRjDEhMB8GA1UEBwwY0JXQutCw0YLQtdGA0LjQvdCx0YPRgNCzMVIwUAYD VQQJDEnRg9C70LjRhtCwINCj0LvRjNGP0L3QvtCy0YHQutCw0Y8sINC0LiAxMywg0LvQuNGC0LXR gCDQkCwg0L7RhNC40YEgMjA5INCRMWwwagYDVQQKDGPQntCx0YnQtdGB0YLQstC+INGBINC+0LPR gNCw0L3QuNGH0LXQvdC90L7QuSDQvtGC0LLQtdGC0YHRgtCy0LXQvdC90L7RgdGC0YzRjiAi0KHQ tdGA0YLRg9C8LdCf0YDQviIxbDBqBgNVBAMMY9Ce0LHRidC10YHRgtCy0L4g0YEg0L7Qs9GA0LDQ vdC40YfQtdC90L3QvtC5INC+0YLQstC10YLRgdGC0LLQtdC90L3QvtGB0YLRjNGOICLQodC10YDR gtGD0Lwt0J/RgNC+IgIRA6fBZwDqrX66TNuPOcoqMA4wCgYIKoUDBwEBAQEEQE2zZ+cPOPDSEOUZ JGMYIj01WBmmOLp6laz7hDNf7zGeogBt9F9f0e1nz0WBcXCLbKp2Qz8XzoDzfrDC12ISO9M=
А вот подписываемая строка ew0KIk9ncm4iIDogIjEwMjM0MDM0NTc0MTciLA0KIktwcCIgOiAiMzQ0NDAxMDAxIg0KfQ==.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,669   Сказал «Спасибо»: 572 раз Поблагодарили: 2299 раз в 1800 постах
|
Автор: Rainokvsy  А вот подписываемая строка ew0KIk9ncm4iIDogIjEwMjM0MDM0NTc0MTciLA0KIktwcCIgOiAiMzQ0NDAxMDAxIg0KfQ==.
Почему в подписываемых данных точка в конце? Этот JWT принимает система? Тогда авторам задайте вопрос, почему по документации написано detached, а проверяется присоединенная. Периодически всплывают темы на форуме: https://www.cryptopro.ru...aspx?g=posts&t=19377 |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,669   Сказал «Спасибо»: 572 раз Поблагодарили: 2299 раз в 1800 постах
|
Автор: Rainokvsy  Header представляет структуру Json кодированную в строку Base64. Payload – непосредственно сами данные сообщения (приведены данные для примера вида записи), представляет собой структуру XML кодированную в строку Base64. Signature представляет закодированную в Base64 ЭП по ГОСТ 34.10-2012 строку . ЭП имеет формат «detached PKCS #7». Для Jwt "Header.Payload.Signature" подписываемая последовательность представляет собой конкатенацию части Header и Payload разделенных символом точка "Header.Payload". Разделитель "." входит в последовательность.Вот инструкция по формированию JWT. У меня в первом запросе Payload нет, потому нужно подписать только Header. Я перевел Header в base64, и на странице формирую подпись, там формируется так как надо:[SPOILER]MIIdIwYJKoZIhvcNAQcCoIIdFDCCHRA /// А вот подписываемая строка ew0KIk9ncm4iIDogIjEwMjM0MDM0NTc0MTciLA0KIktwcCIgOiAiMzQ0NDAxMDAxIg0KfQ==. Цитата:У меня в первом запросе Payload нет, потому нужно подписать только Header. Интересная ситуация. Теперь понятно |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.05.2022(UTC) Сообщений: 6  Сказал(а) «Спасибо»: 6 раз
|
Автор: Андрей *  Автор: Rainokvsy  А вот подписываемая строка ew0KIk9ncm4iIDogIjEwMjM0MDM0NTc0MTciLA0KIktwcCIgOiAiMzQ0NDAxMDAxIg0KfQ==.
Почему в подписываемых данных точка в конце? Этот JWT принимает система? Тогда авторам задайте вопрос, почему по документации написано detached, а проверяется присоединенная. Периодически всплывают темы на форуме: https://www.cryptopro.ru...aspx?g=posts&t=19377 Тему читал, не помогло. С авторами разговаривать бесполезно, они оправляют в документацию, содержание которой я процитировал. Да я и не понимаю о чем разговаривать с людьми, которые уверенны, что корректность данных должно не из API проверять, а это моя задача и задача моей информационной системы. Если знаете, подскажите как сформировать такую же подпись как на сайте, я уже что придумал, все перепробовал, остается только предположение что у меня что-то криво стоит. Но с другой стороны, на сайте же работает. Уже если честно не важно, atachet или detachet и каким алгоритмом о все остальное, Главное как получить туже подпись как на сайте.
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 396 раз в 366 постах
|
Добрый день. Из приложенного примера вижу, что подпись присоединенная (attached) и в ней включена вся цепочка сертификатов. Для включения всей цепочки попробуйте для объекта Signer установить свойство Options в CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN (или значение 1). Ключевые моменты с демостраницы можно посмотреть в исходном коде. https://www.cryptopro.ru...s/cades/demopage/Code.jshttps://www.cryptopro.ru...cades/cadesplugin_api.jsОни не особо отличаются от примера Питона (без обработки ошибок и вывода на страницу вышло примерно так, версия NPAPI), разве что используется сразу SignCades вместо сочетания HashedData и SignHash. В случае Питона ContentEncoding Content относятся к HashedData (соответственно DataEncoding и строка передаваемая в метод Hash):
Код:// dataToSign подписываемая строка (может быть в BASE64 или без кодирования)
// certObject сертификат
// setDisplayData необязательный: Set display data flag flag for devices like Rutoken PinPad
// isBase64 необязательный - нужно передать что-то если dataToSign уже в BASE64
function MakeCadesBesSign_NPAPI(dataToSign, certObject, setDisplayData, isBase64){
var oSigner = cadesplugin.CreateObject("CAdESCOM.CPSigner");
oSigner.Certificate = certObject;
var oSignedData = cadesplugin.CreateObject("CAdESCOM.CadesSignedData");
var CADES_BES = 1;
var Signature;
if (dataToSign) {
oSignedData.ContentEncoding = 1; //CADESCOM_BASE64_TO_BINARY
if (typeof (isBase64) == 'undefined') {
oSignedData.Content = Base64.encode(dataToSign);
} else {
oSignedData.Content = dataToSign;
}
}
if (typeof (setDisplayData) != 'undefined') {
//Set display data flag flag for devices like Rutoken PinPad
oSignedData.DisplayData = 1;
}
oSigner.Options = 1; //CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN
Signature = oSignedData.SignCades(oSigner, CADES_BES);
return Signature;
}
// обертка: главным образом ищет сертификат и выводит результат на страницу
function CreateSimpleSign_NPAPI()
{
oCert = GetFirstCert_NPAPI();
var x = GetSignatureTitleElement();
if (typeof oCert != "undefined") {
FillCertInfo_NPAPI(oCert);
var sSignedData = MakeCadesBesSign_NPAPI(txtDataToSign, oCert);
document.getElementById("SignatureTxtBox").innerHTML = sSignedData;
}
}
Отредактировано пользователем 11 мая 2022 г. 13:13:13(UTC)
| Причина: Не указана
|
 1 пользователь поблагодарил two_oceans за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.05.2022(UTC) Сообщений: 6  Сказал(а) «Спасибо»: 6 раз
|
Не получается ничего. Я уже попробовал поместить требуемую строку в файл и подписать ее с помощью cryptcp. Можно ли по первым знакам подписи понять какие параметры подписи? Код:cryptcp -sign -thumbprint 73af17e557895972b00d76967a32ecb01b6184a9 -strict -detached -addchain file
При этом в начале сформированной подписи MII ctwYJKoZIhvcNAQcCoII cqDCCH KQCAQExDDAKBggqhQMHAQECAj ALBgkqhkiG9w0BBwGg У корректной MII dIwYJKoZIhvcNAQcCoII dFDCCH RACAQExDDAKBggqhQMHAQECAj BYBgkqhkiG9w0BBwGg далее идут сильные отличия. Возможно ли, что выделенные отличия связаны с какими-то конкретными опциями при формировании?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close