Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,690   Сказал «Спасибо»: 573 раз Поблагодарили: 2303 раз в 1804 постах
|
Закодируйте Content в base64, укажите перед инициализацией ContentEncoding, пример: Код: oSignedData.ContentEncoding = 1
oSignedData.Content = "U29tZSBEYXRhLg=="
Пример : Цитата: // Предварительно закодированные в BASE64 бинарные данные // В данном случае закодирована строка "Some Data."
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,690   Сказал «Спасибо»: 573 раз Поблагодарили: 2303 раз в 1804 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2019(UTC) Сообщений: 28  Откуда: МСК
|
В качестве: oSignedData.Content использовал вашу строку "U29tZSBEYXRhLg==" + oSignedData.ContentEncoding = 1 .
при флаге False:
MIINHwYJKoZIhvcNAQcCoIINEDCCDQwCAQExDDAKBgYqhQMCAgkFADALBgkqhkiG9w0BBwGgggkL MIIJBzCCCLagAwIBAgIKRzalrwADAANs4TAIBgYqhQMCAgMwggFIMRgwFgYFKoUDZAESDTEwMzc3 MDAwODU0NDQxGjAYBggqhQMDgQMBARIMMDA3NzE3MTA3OTkxMTkwNwYDVQQJHjAEQwQ7AC4AIAQh BEMESQRRBDIEQQQ6BDgEOQAgBDIEMAQ7ACwAIAQ0AC4AIAAxADgxITAfBgNVBAgeGAA3ADcAIAQz AC4AIAQcBD4EQQQ6BDIEMDEVMBMGA1UEBx4MBBwEPgRBBDoEMgQwMSAwHgYJKoZIhvcNAQkBFhFp bmZvQGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxKTAnBgNVBAoeIAQeBB4EHgAgACIEGgQgBBgE HwQiBB4ALQQfBCAEHgAiMUEwPwYDVQQDHjgEIgQ1BEEEQgQ+BDIESwQ5ACAEIwQmACAEHgQeBB4A IAAiBBoEIAQYBB8EIgQeAC0EHwQgBB4AIjAeFw0xOTA5MDkxMTAxMDBaFw0xOTEyMDkxMTExMDBa MIICDzEYMBYGBSqFA2QBEg0xMjM0NTY3ODkwMTIzMRowGAYIKoUDA4EDAQESDDAwMTIzNDU2Nzg5 MDEbMBkGCSqGSIb3DQEJARYMaW5mb0B0ZXN0LnJ1MQswCQYDVQQGEwJSVTElMCMGA1UECAwc0JzQ vtGB0LrQvtCy0YHQutCw0Y8g0L7QsdC7LjEfMB0GA1UEBwwW0LMuINCi0LXRgdGC0L7Qs9GA0LDQ tDEnMCUGA1UECgwe0J7RgNCz0LDQvdC40LfQsNGG0LjRj9Ci0LXRgdGCMSswKQYDVQQLDCLQn9C+ 0LTRgNCw0LfQtNC10LvQtdC90LjQtdCi0LXRgdGCMSIwIAYDVQQDDBnQotC10YHRgtC+0LLRi9C5 INCj0JrQrdCfMSswKQYDVQQJDCLRg9C7LiDQotC10YHRgtC+0LLQsNGPINC00L7QvC4gMTIzMUMw QQYJKoZIhvcNAQkCDDTRgtC10YHRgtCd0LXRgdGC0YDRg9C60YLRg9GA0LjRgNC+0LLQsNC90L3Q vtC10JjQvNGPMSMwIQYDVQQMDBrQlNC+0LvQttC90L7RgdGC0YzQotC10YHRgjEyMDAGA1UEKgwp 0JjQvNGP0KLQtdGB0YIyINCe0YLRh9C10YHRgtCy0L7QotC10YHRgjIxIDAeBgNVBAQMF9Ck0LDQ vNC40LvQuNGP0KLQtdGB0YIyMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEDQwAEQMWf 2rSE7EVTZjfboGYzZxUNZlZ0ZJKoEAr3wcUJ/Ar5WMPR593iwyUCziJnqX87PHWzXtpI8enwiq8c 1qduVAyjggSzMIIErzAOBgNVHQ8BAf8EBAMCBPAwJgYDVR0lBB8wHQYIKwYBBQUHAwQGByqFAwIC IgYGCCsGAQUFBwMCMB0GA1UdDgQWBBRnzlL2NPMqC2BC9pyhQYjUGkg0RTCCAYkGA1UdIwSCAYAw ggF8gBQrshA0ZoICrPDhqkCGeAFxRZ0z46GCAVCkggFMMIIBSDEYMBYGBSqFA2QBEg0xMDM3NzAw MDg1NDQ0MRowGAYIKoUDA4EDAQESDDAwNzcxNzEwNzk5MTE5MDcGA1UECR4wBEMEOwAuACAEIQRD BEkEUQQyBEEEOgQ4BDkAIAQyBDAEOwAsACAENAAuACAAMQA4MSEwHwYDVQQIHhgANwA3ACAEMwAu ACAEHAQ+BEEEOgQyBDAxFTATBgNVBAceDAQcBD4EQQQ6BDIEMDEgMB4GCSqGSIb3DQEJARYRaW5m b0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMSkwJwYDVQQKHiAEHgQeBB4AIAAiBBoEIAQYBB8E IgQeAC0EHwQgBB4AIjFBMD8GA1UEAx44BCIENQRBBEIEPgQyBEsEOQAgBCMEJgAgBB4EHgQeACAA IgQaBCAEGAQfBCIEHgAtBB8EIAQeACKCEESH2ldJk2CeSHb2gnNE/xcwXAYDVR0fBFUwUzBRoE+g TYZLaHR0cDovL3d3dy5jcnlwdG9wcm8ucnUvcmEvY2RwLzJiYjIxMDM0NjY4MjAyYWNmMGUxYWE0 MDg2NzgwMTcxNDU5ZDMzZTMuY3JsMIGxBggrBgEFBQcBAQSBpDCBoTA0BggrBgEFBQcwAYYoaHR0 cDovL3d3dy5jcnlwdG9wcm8ucnUvb2NzcG5jMi9vY3NwLnNyZjAyBggrBgEFBQcwAYYmaHR0cDov L3d3dy5jcnlwdG9wcm8ucnUvb2NzcDIvb2NzcC5zcmYwNQYIKwYBBQUHMAKGKWh0dHA6Ly93d3cu Y3J5cHRvcHJvLnJ1L3JhL2NkcC9jYWNlcjMuY3J0MCsGA1UdEAQkMCKADzIwMTkwOTA5MTEwMTAw WoEPMjAxOTEyMDkxMTAxMDBaMB0GA1UdIAQWMBQwCAYGKoUDZHEBMAgGBiqFA2RxAjA0BgUqhQNk bwQrDCnQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQICjQstC10YDRgdC40Y8gMy42KTCCATMGBSqFA2Rw BIIBKDCCASQMKyLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGPIDMuNikMUyLQ o9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAgItCa0YDQuNC/0YLQvtCf0YDQ viDQo9CmIiDQstC10YDRgdC40LggMS41DE/QodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy 0LXRgtGB0YLQstC40Y8g4oSWINCh0KQvMTI0LTI3Mzgg0L7RgiAwMS4wNy4yMDE1DE/QodC10YDR gtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y8g4oSWINCh0KQvMTI4LTI3Njgg 0L7RgiAzMS4xMi4yMDE1MAgGBiqFAwICAwNBAHBUWLLF8X0R2zOhUYOA+tt6w0qkpQdo8NY64/IY eoNrnozow5qYydgAch8C+nGaIPFTjWyRuokJrsYq4Z1le9AxggPbMIID1wIBATCCAVgwggFIMRgw FgYFKoUDZAESDTEwMzc3MDAwODU0NDQxGjAYBggqhQMDgQMBARIMMDA3NzE3MTA3OTkxMTkwNwYD VQQJHjAEQwQ7AC4AIAQhBEMESQRRBDIEQQQ6BDgEOQAgBDIEMAQ7ACwAIAQ0AC4AIAAxADgxITAf BgNVBAgeGAA3ADcAIAQzAC4AIAQcBD4EQQQ6BDIEMDEVMBMGA1UEBx4MBBwEPgRBBDoEMgQwMSAw HgYJKoZIhvcNAQkBFhFpbmZvQGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxKTAnBgNVBAoeIAQe BB4EHgAgACIEGgQgBBgEHwQiBB4ALQQfBCAEHgAiMUEwPwYDVQQDHjgEIgQ1BEEEQgQ+BDIESwQ5 ACAEIwQmACAEHgQeBB4AIAAiBBoEIAQYBB8EIgQeAC0EHwQgBB4AIgIKRzalrwADAANs4TAKBgYq hQMCAgkFAKCCAhowGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTkw OTIwMTA0MjI2WjAvBgkqhkiG9w0BCQQxIgQg+qS4bo4cueZ00K5WP1zP9KF98T9pRBYjb9lFq/kQ 0m0wggGtBgsqhkiG9w0BCRACLzGCAZwwggGYMIIBlDCCAZAwCAYGKoUDAgIJBCC2LdxGPfNeKJo1 BBsN3JODvvbToRIdaWE/f0PgLza3XzCCAWAwggFQpIIBTDCCAUgxGDAWBgUqhQNkARINMTAzNzcw MDA4NTQ0NDEaMBgGCCqFAwOBAwEBEgwwMDc3MTcxMDc5OTExOTA3BgNVBAkeMARDBDsALgAgBCEE QwRJBFEEMgRBBDoEOAQ5ACAEMgQwBDsALAAgBDQALgAgADEAODEhMB8GA1UECB4YADcANwAgBDMA LgAgBBwEPgRBBDoEMgQwMRUwEwYDVQQHHgwEHAQ+BEEEOgQyBDAxIDAeBgkqhkiG9w0BCQEWEWlu Zm9AY3J5cHRvcHJvLnJ1MQswCQYDVQQGEwJSVTEpMCcGA1UECh4gBB4EHgQeACAAIgQaBCAEGAQf BCIEHgAtBB8EIAQeACIxQTA/BgNVBAMeOAQiBDUEQQRCBD4EMgRLBDkAIAQjBCYAIAQeBB4EHgAg ACIEGgQgBBgEHwQiBB4ALQQfBCAEHgAiAgpHNqWvAAMAA2zhMAoGBiqFAwICEwUABEDNaSKxgUkf Gf0ohpCTwJjQXlbkYNeVCeJhk/9DougNRoUZn7BvSqBpnQXPxtfNuHlTClBzomv+5Tmudz4w3qoI
при флаге TRue MIINLQYJKoZIhvcNAQcCoIINHjCCDRoCAQExDDAKBgYqhQMCAgkFADAZBgkqhkiG9w0BBwGgDAQK U29tZSBEYXRhLqCCCQswggkHMIIItqADAgECAgpHNqWvAAMAA2zhMAgGBiqFAwICAzCCAUgxGDAW BgUqhQNkARINMTAzNzcwMDA4NTQ0NDEaMBgGCCqFAwOBAwEBEgwwMDc3MTcxMDc5OTExOTA3BgNV BAkeMARDBDsALgAgBCEEQwRJBFEEMgRBBDoEOAQ5ACAEMgQwBDsALAAgBDQALgAgADEAODEhMB8G A1UECB4YADcANwAgBDMALgAgBBwEPgRBBDoEMgQwMRUwEwYDVQQHHgwEHAQ+BEEEOgQyBDAxIDAe BgkqhkiG9w0BCQEWEWluZm9AY3J5cHRvcHJvLnJ1MQswCQYDVQQGEwJSVTEpMCcGA1UECh4gBB4E HgQeACAAIgQaBCAEGAQfBCIEHgAtBB8EIAQeACIxQTA/BgNVBAMeOAQiBDUEQQRCBD4EMgRLBDkA IAQjBCYAIAQeBB4EHgAgACIEGgQgBBgEHwQiBB4ALQQfBCAEHgAiMB4XDTE5MDkwOTExMDEwMFoX DTE5MTIwOTExMTEwMFowggIPMRgwFgYFKoUDZAESDTEyMzQ1Njc4OTAxMjMxGjAYBggqhQMDgQMB ARIMMDAxMjM0NTY3ODkwMRswGQYJKoZIhvcNAQkBFgxpbmZvQHRlc3QucnUxCzAJBgNVBAYTAlJV MSUwIwYDVQQIDBzQnNC+0YHQutC+0LLRgdC60LDRjyDQvtCx0LsuMR8wHQYDVQQHDBbQsy4g0KLQ tdGB0YLQvtCz0YDQsNC0MScwJQYDVQQKDB7QntGA0LPQsNC90LjQt9Cw0YbQuNGP0KLQtdGB0YIx KzApBgNVBAsMItCf0L7QtNGA0LDQt9C00LXQu9C10L3QuNC10KLQtdGB0YIxIjAgBgNVBAMMGdCi 0LXRgdGC0L7QstGL0Lkg0KPQmtCt0J8xKzApBgNVBAkMItGD0LsuINCi0LXRgdGC0L7QstCw0Y8g 0LTQvtC8LiAxMjMxQzBBBgkqhkiG9w0BCQIMNNGC0LXRgdGC0J3QtdGB0YLRgNGD0LrRgtGD0YDQ uNGA0L7QstCw0L3QvdC+0LXQmNC80Y8xIzAhBgNVBAwMGtCU0L7Qu9C20L3QvtGB0YLRjNCi0LXR gdGCMTIwMAYDVQQqDCnQmNC80Y/QotC10YHRgjIg0J7RgtGH0LXRgdGC0LLQvtCi0LXRgdGCMjEg MB4GA1UEBAwX0KTQsNC80LjQu9C40Y/QotC10YHRgjIwYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYH KoUDAgIeAQNDAARAxZ/atITsRVNmN9ugZjNnFQ1mVnRkkqgQCvfBxQn8CvlYw9Hn3eLDJQLOImep fzs8dbNe2kjx6fCKrxzWp25UDKOCBLMwggSvMA4GA1UdDwEB/wQEAwIE8DAmBgNVHSUEHzAdBggr BgEFBQcDBAYHKoUDAgIiBgYIKwYBBQUHAwIwHQYDVR0OBBYEFGfOUvY08yoLYEL2nKFBiNQaSDRF MIIBiQYDVR0jBIIBgDCCAXyAFCuyEDRmggKs8OGqQIZ4AXFFnTPjoYIBUKSCAUwwggFIMRgwFgYF KoUDZAESDTEwMzc3MDAwODU0NDQxGjAYBggqhQMDgQMBARIMMDA3NzE3MTA3OTkxMTkwNwYDVQQJ HjAEQwQ7AC4AIAQhBEMESQRRBDIEQQQ6BDgEOQAgBDIEMAQ7ACwAIAQ0AC4AIAAxADgxITAfBgNV BAgeGAA3ADcAIAQzAC4AIAQcBD4EQQQ6BDIEMDEVMBMGA1UEBx4MBBwEPgRBBDoEMgQwMSAwHgYJ KoZIhvcNAQkBFhFpbmZvQGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxKTAnBgNVBAoeIAQeBB4E HgAgACIEGgQgBBgEHwQiBB4ALQQfBCAEHgAiMUEwPwYDVQQDHjgEIgQ1BEEEQgQ+BDIESwQ5ACAE IwQmACAEHgQeBB4AIAAiBBoEIAQYBB8EIgQeAC0EHwQgBB4AIoIQRIfaV0mTYJ5IdvaCc0T/FzBc BgNVHR8EVTBTMFGgT6BNhktodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9yYS9jZHAvMmJiMjEwMzQ2 NjgyMDJhY2YwZTFhYTQwODY3ODAxNzE0NTlkMzNlMy5jcmwwgbEGCCsGAQUFBwEBBIGkMIGhMDQG CCsGAQUFBzABhihodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwbmMyL29jc3Auc3JmMDIGCCsG AQUFBzABhiZodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwMi9vY3NwLnNyZjA1BggrBgEFBQcw AoYpaHR0cDovL3d3dy5jcnlwdG9wcm8ucnUvcmEvY2RwL2NhY2VyMy5jcnQwKwYDVR0QBCQwIoAP MjAxOTA5MDkxMTAxMDBagQ8yMDE5MTIwOTExMDEwMFowHQYDVR0gBBYwFDAIBgYqhQNkcQEwCAYG KoUDZHECMDQGBSqFA2RvBCsMKdCa0YDQuNC/0YLQvtCf0YDQviBDU1AgKNCy0LXRgNGB0LjRjyAz LjYpMIIBMwYFKoUDZHAEggEoMIIBJAwrItCa0YDQuNC/0YLQvtCf0YDQviBDU1AiICjQstC10YDR gdC40Y8gMy42KQxTItCj0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgCAi0JrR gNC40L/RgtC+0J/RgNC+INCj0KYiINCy0LXRgNGB0LjQuCAxLjUMT9Ch0LXRgNGC0LjRhNC40LrQ sNGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRjyDihJYg0KHQpC8xMjQtMjczOCDQvtGCIDAxLjA3 LjIwMTUMT9Ch0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRjyDihJYg 0KHQpC8xMjgtMjc2OCDQvtGCIDMxLjEyLjIwMTUwCAYGKoUDAgIDA0EAcFRYssXxfRHbM6FRg4D6 23rDSqSlB2jw1jrj8hh6g2uejOjDmpjJ2AByHwL6cZog8VONbJG6iQmuxirhnWV70DGCA9swggPX AgEBMIIBWDCCAUgxGDAWBgUqhQNkARINMTAzNzcwMDA4NTQ0NDEaMBgGCCqFAwOBAwEBEgwwMDc3 MTcxMDc5OTExOTA3BgNVBAkeMARDBDsALgAgBCEEQwRJBFEEMgRBBDoEOAQ5ACAEMgQwBDsALAAg BDQALgAgADEAODEhMB8GA1UECB4YADcANwAgBDMALgAgBBwEPgRBBDoEMgQwMRUwEwYDVQQHHgwE HAQ+BEEEOgQyBDAxIDAeBgkqhkiG9w0BCQEWEWluZm9AY3J5cHRvcHJvLnJ1MQswCQYDVQQGEwJS VTEpMCcGA1UECh4gBB4EHgQeACAAIgQaBCAEGAQfBCIEHgAtBB8EIAQeACIxQTA/BgNVBAMeOAQi BDUEQQRCBD4EMgRLBDkAIAQjBCYAIAQeBB4EHgAgACIEGgQgBBgEHwQiBB4ALQQfBCAEHgAiAgpH NqWvAAMAA2zhMAoGBiqFAwICCQUAoIICGjAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG SIb3DQEJBTEPFw0xOTA5MjAxMDQ0MjZaMC8GCSqGSIb3DQEJBDEiBCD6pLhujhy55nTQrlY/XM/0 oX3xP2lEFiNv2UWr+RDSbTCCAa0GCyqGSIb3DQEJEAIvMYIBnDCCAZgwggGUMIIBkDAIBgYqhQMC AgkEILYt3EY9814omjUEGw3ck4O+9tOhEh1pYT9/Q+AvNrdfMIIBYDCCAVCkggFMMIIBSDEYMBYG BSqFA2QBEg0xMDM3NzAwMDg1NDQ0MRowGAYIKoUDA4EDAQESDDAwNzcxNzEwNzk5MTE5MDcGA1UE CR4wBEMEOwAuACAEIQRDBEkEUQQyBEEEOgQ4BDkAIAQyBDAEOwAsACAENAAuACAAMQA4MSEwHwYD VQQIHhgANwA3ACAEMwAuACAEHAQ+BEEEOgQyBDAxFTATBgNVBAceDAQcBD4EQQQ6BDIEMDEgMB4G CSqGSIb3DQEJARYRaW5mb0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMSkwJwYDVQQKHiAEHgQe BB4AIAAiBBoEIAQYBB8EIgQeAC0EHwQgBB4AIjFBMD8GA1UEAx44BCIENQRBBEIEPgQyBEsEOQAg BCMEJgAgBB4EHgQeACAAIgQaBCAEGAQfBCIEHgAtBB8EIAQeACICCkc2pa8AAwADbOEwCgYGKoUD AgITBQAEQBeFpcnsCDzd945SBeqedCrlVrQTJfa3h5EzjGuEiGN8Ss2kopW8KLu67uf/eYrWdh1M SiXpndxS41swR6G/9xE=
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,690   Сказал «Спасибо»: 573 раз Поблагодарили: 2303 раз в 1804 постах
|
Обе подписи проходят проверку. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2019(UTC) Сообщений: 28  Откуда: МСК
|
А можно тогда уточнить почему при подписи данных и следующей проверке их с помощью VerifyCades результат False?
sSignedData = oSignedData.SignCades(oSigner, CADES_BES, False, CAPICOM_ENCODE_BASE64) oSignedData.VerifyCades sSignedData, CADES_BES, False
В описании функции должно возвращаться True.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,690   Сказал «Спасибо»: 573 раз Поблагодарили: 2303 раз в 1804 постах
|
Автор: Setix  А можно тогда уточнить почему при подписи данных и следующей проверке их с помощью VerifyCades результат False?
sSignedData = oSignedData.SignCades(oSigner, CADES_BES, False, CAPICOM_ENCODE_BASE64) oSignedData.VerifyCades sSignedData, CADES_BES, False
В описании функции должно возвращаться True. Из моего примера или внесены исправления? Снимок с ошибкой из vbs можно? Сторонний софт - проверяет также успешно. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2019(UTC) Сообщений: 28  Откуда: МСК
|
Ваш код транслировал на Delphi - скажем так слово в слово. подсветку сделал С чтобы код читаемым стал. Код:
procedure Test;
var sSerialNumber : AnsiString;
var oSigner : Olevariant;
var outCTR : Olevariant;
var oSignedData : OleVariant;
var sSignedData : OleVariant;
begin
sSerialNumber := '6B00AF41000300036D76'; {номер сертификата}
oSigner := COMOBJ.CreateOleObject('CAdESCOM.CPSigner'); {}
if GetSignerCertificate(sSerialNumber,outCTR) then {если нашли указанный сертификат}
begin
oSigner.Certificate := outCTR; {}
oSignedData := COMOBJ.CreateOleObject('CAdESCOM.CadesSignedData'); {}
oSignedData.ContentEncoding := 1; {}
oSignedData.Content := 'U29tZSBEYXRhLg=='; {}
sSignedData := oSignedData.SignCades(oSigner,{CADES_BES}1,False,{CAPICOM_ENCODE_BASE64}0); {получаем подписанные данные}
if oSignedData.VerifyCades(sSignedData,{CADES_BES}1,False)=True {проверяем подписанные данные}
then ShowMessage('Подпись верна')
else ShowMessage('Подпись не верна')
end
end;
function GetSignerCertificate(SerialNumber:AnsiString;var res:Olevariant) :boolean;
var Store : Olevariant;
var Crts : OleVariant;
var count : longint;
var ii : longint;
var Crt : OleVariant;
begin
Result := False;
Store := COMOBJ.CreateOleObject('CAdESCOM.Store');
Store.Open(2);
Crts := Store.Certificates;
count := crts.Count;
for ii:=1 to count do
begin
Crt := crts.item[ii];
if Crt.SerialNumber=SerialNumber then
begin res := Crt; Result := True; break; end;
end;
end;
Отредактировано пользователем 23 сентября 2019 г. 12:40:59(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2019(UTC) Сообщений: 28  Откуда: МСК
|
Автор: Setix  Ваш код транслировал на Delphi - скажем так слово в слово. подсветку сделал С чтобы код читаемым стал. В {} комментарий. Код:
procedure Test;
var sSerialNumber : AnsiString;
var oSigner : Olevariant;
var outCTR : Olevariant;
var oSignedData : OleVariant;
var sSignedData : OleVariant;
begin
sSerialNumber := '6B00AF41000300036D76'; {номер сертификата}
oSigner := COMOBJ.CreateOleObject('CAdESCOM.CPSigner'); {}
if GetSignerCertificate(sSerialNumber,outCTR) then {если нашли указанный сертификат}
begin
oSigner.Certificate := outCTR; {}
oSignedData := COMOBJ.CreateOleObject('CAdESCOM.CadesSignedData'); {}
oSignedData.ContentEncoding := 1; {}
oSignedData.Content := 'U29tZSBEYXRhLg=='; {}
sSignedData := oSignedData.SignCades(oSigner,{CADES_BES}1,False,{CAPICOM_ENCODE_BASE64}0); {получаем подписанные данные}
if oSignedData.VerifyCades(sSignedData,{CADES_BES}1,False)=True {проверяем подписанные данные}
then ShowMessage('Подпись верна')
else ShowMessage('Подпись не верна')
end
end;
function GetSignerCertificate(SerialNumber:AnsiString;var res:Olevariant) :boolean;
var Store : Olevariant;
var Crts : OleVariant;
var count : longint;
var ii : longint;
var Crt : OleVariant;
begin
Result := False;
Store := COMOBJ.CreateOleObject('CAdESCOM.Store');
Store.Open(2);
Crts := Store.Certificates;
count := crts.Count;
for ii:=1 to count do
begin
Crt := crts.item[ii];
if Crt.SerialNumber=SerialNumber then
begin res := Crt; Result := True; break; end;
end;
end;
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,690   Сказал «Спасибо»: 573 раз Поблагодарили: 2303 раз в 1804 постах
|
1. В Delphi можно обращаться без COM, к MS CryptoAPI 2.0 2. Почитайте Объект CadesSignedDataесли перейти по ссылкам в MSDN - то становится понятно поведение: Цитата: If this method fails, an error will be thrown. The Err object will contain additional information about the error.
Где написано, что возвращается boolean? или Метод ICPSignedData2::VerifyCades Работа через исключение + код\текст проблемы. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,690   Сказал «Спасибо»: 573 раз Поблагодарили: 2303 раз в 1804 постах
|
Код:
try
// поменяем исходные данные, чтобы поймать исключение и текст ошибки:
oSignedData.Content := 'U19tZSBEYXRhLg==';
oSignedData.VerifyCades(sSignedData, {CADES_BES}1, True); {проверяем подписанные данные}
ShowMessage('Подпись верна')
except
on E:Exception do
ShowMessage('Подпись не верна: '+E.Message)
end;
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close