|
|
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Как получить все атрибуты поля Subject? Так чтобы у меня был массив записей из 2-х параметров - имя_атрибута, значение_атрибута : Код: pascal 1. Причем, как я понимаю, там могут быть совершенно нестандартные атрибуты типа ИНН, КПП и проч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 17:33 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, самый простой способ - прочитать Subject функцией CertNameToStr. для нее есть три константы const CERT_SIMPLE_NAME_STR = 1; const CERT_OID_NAME_STR = 2; const CERT_X500_NAME_STR = 3; последние две как раз дают результат с именами атрибутов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 20:06 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, Я получаю строку Subject таким способом, вопрос в том как распарсить эту строку К примеру : авторC=US, S=California, L=San Jose, O="Adobe Systems, Incorporated", OU=Digital ID Class 3 - Microsoft Software Validation v2, OU=Acrobat Engineering, CN="Adobe Systems, Incorporated" Стандартным SplitString(str, ',') тут не обойтись - запятые внутри значений атрибутов все ломают С TStringList та же хрень Подумал, может есть в API готовые функции перебора списка атрибутов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 20:27 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-TalkerПодумал, может есть в API готовые функции перебора списка атрибутовда, есть курить надо PCERT_NAME_INFO PCERT_RDN PCERT_RDN_ATTR CertRDNValueToStr вначале декодировать Subject как X509_UNICODE_NAME ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 20:45 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-Talkerполучаю строку Subject таким способом, вопрос в том как распарсить эту строку CertNameToStr с комбинацией параметров CERT_X500_NAME_STR or CERT_NAME_STR_CRLF_FLAG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 21:00 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, Набросал код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. Не компилируется , останавливается на первом же CryptDecodeObject и говорит - "E2033 Types of actual and formal var parameters must be identical" Не могу понять где ошибка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 11:23 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, предположу, что vCertContext ^ ... а может не мучиться ? Ghost WriterCertNameToStr с комбинацией параметров CERT_X500_NAME_STR or CERT_NAME_STR_CRLF_FLAG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 11:54 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, Блин, слона то и не приметил - or CERT_NAME_STR_CRLF_FLAG :)) Так конечно все сильно проще Хотя, в принципе, хорошо бы понять почему предыдущий вариант не работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 12:27 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, в JwaWinCrypt у CryptDecodeObject параметр pcbStructInfo: DWORD а не PDWORD, убери @ перед cbStructInfo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 13:30 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, Убрал, больше не ругается тут Ругается на строке Код: pascal 1. E2016 Array type required Вроде, по документации это массив https://docs.microsoft.com/en-us/windows/desktop/api/wincrypt/ns-wincrypt-cert_name_info rgRDN - Array of pointers to CERT_RDN structures. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 14:26 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, Вот так заработало: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Одно "но" - на выходе получил список ЗНАЧЕНИЙ атрибутов, без их ИМЕН авторMicrosoft Root Certificate Authority 2011 Microsoft Corporation Redmond Washington US А имена как получить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 14:50 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-TalkerА имена как получить ?@vRDNAttr.pszObjId + CryptFindOIDInfo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 14:59 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-TalkerSQL-Talker, Вот так заработало: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Одно "но" - на выходе получил список ЗНАЧЕНИЙ атрибутов, без их ИМЕН авторMicrosoft Root Certificate Authority 2011 Microsoft Corporation Redmond Washington US А имена как получить ?в этом коде утечка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 15:18 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Квейд, Спасибо, увидел Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 15:24 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Ghost WriterSQL-TalkerА имена как получить ?@vRDNAttr.pszObjId + CryptFindOIDInfoСделал: Код: pascal 1. И так мне думается будет лучше чем вариант с CertNameToStr + CERT_X500_NAME_STR or CERT_NAME_STR_CRLF_FLAG , т.к. тут мы значения получаем в чистом виде - без лишних кавычек, к примеру. А вариант CertNameToStr + CERT_X500_NAME_STR or CERT_NAME_STR_CRLF_FLAG - если в значении есть кавычки, он их удваивает и все значение оборачивает еще в кавычки. Нужно такие варианты отслеживать, убирать кавычки, т.е. - прилаживать свои костыли, в то время как все уже написано :)) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2019, 11:40 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Только сейчас обратил внимание, CertRDNValueToStr не всегда возвращает мне полное значение Код: pascal 1. У меня в сертификате есть поля "ИНН" и "E" (email) для них возвращется только первый символ и все. В чем может быть проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2019, 14:23 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Причем, вот: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2019, 14:36 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
То есть это атрибут с именем "ИНН" и значение его = "007728551528" а тут после каждого символа идет #0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2019, 14:41 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, чему равно vRDNAttr.dwValueType ? попробуй просто CertRDNValueToStr(CERT_RDN_UNICODE_STRING, ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2019, 15:07 |
|
||
|
CryptoAPI - Как получить все атрибуты поля Subject?
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, Помогло )) А значение vRDNAttr.dwValueType было = 3 ( CERT_RDN_NUMERIC_STRING ) Получается, тип данных vRDNAttr.Value не совпадал с типом указанным в vRDNAttr.dwValueType. Не ожидал такого подвоха ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2019, 15:39 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39822988&tid=2039408]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 558ms |

| 0 / 0 |
