|
|
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
Мне нужен уникальный идентификатор сертификата. В интернетах предлагают использовать для этих целей Issuer + SerialNumber. Нашел в доках функцию CertGetCertificateContextProperty которая с параметром CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID возвращает хэш Издателя + сер.номер авторMD5 hash of the issuer name and serial number from this certificate https://docs.microsoft.com/en-us/windows/desktop/api/wincrypt/nf-wincrypt-certgetcertificatecontextproperty#cert_issuer_serial_number_md5_hash_prop_id Написал функцию: Код: 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. Все бы хорошо, но вместо ожидаемого поведения когда для одного и того же сертификата, возвращаемое значение всегда одно и то же, получил такое: если ее вызвать несколько раз подряд то первые 2-3-4 раза (по разному всякий раз) значения возвращаются разные, а потом "стабилизируется" и возвращается одинаковый результат. Но после перезапуска программы, опять все по новой естественно. Явно где-то слажал. А вот где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2019, 15:10 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
Как минимум так Код: 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. А если вспомнить, что MD5 хеш имеет фиксированную длину 128 бит = 16 байт, то вообще вот так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2019, 15:29 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Т.е. ключевая ошибка в том что не учел, что в отличие от старых версий Delphi , Char теперь равен WideChar, что состовляет 2 байта а не один Спасибо большое, все глаза проглядел, но не мог увидеть в чем трабла )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2019, 15:47 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
SQL-TalkerТ.е. ключевая ошибка в том что не учел, что в отличие от старых версий Delphi , Char теперь равен WideChar, что состовляет 2 байта а не одини ещеpcbData A pointer to a DWORD value that specifies the size, in bytes, of the buffer pointed to by the pvData parameter. When the function returns, the DWORD value contains the number of bytes to be stored in the buffer. To obtain the required size of a buffer at run time, pass NULL for the pvData parameter, and set the value pointed to by this parameter to zero . If the pvData parameter is not NULL and the size specified in pcbData is less than the number of bytes required to contain the data, the function fails, GetLastError returns ERROR_MORE_DATA, and the required size is placed in the variable pointed to by the pcbData parameter. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2019, 15:57 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
SQL-Talkerключевая ошибкаНу и вызов GetMem подразумевает FreeMem ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2019, 15:58 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Ага, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2019, 18:04 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, Чем sha1 не угодил, который ОС сама и показывает в окне при просмотре сертификата, вкладка Состав? Связка Issuer + SerialNumber - нужна для расшифровки, чтобы определить перечень сертификатов, сверить с доступными и определить какую связку (сертификат - контейнер) использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2019, 09:52 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
sql2012, sha1 это - "certificate fingerprint" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 17:56 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, Именно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 18:57 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
О, здорово! SHA1 получаю функцией CertGetCertificateContextProperty с параметром CERT_SHA1_HASH_PROP_ID А функцией CertFindCertificateInStore с параметром CERT_FIND_SHA1_HASH в один ход производится поиск в хранилище по этому отпечатку. В предыдущем варианте для поиска нужно перебирать сертификаты с помощью CertEnumCertificatesInStore а тут короче. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 19:15 |
|
||
|
CryptoAPI - Уникальный идентификатор сертификата
|
|||
|---|---|---|---|
|
#18+
SQL-TalkerМне нужен уникальный идентификатор сертификата есть GUID ))) p.s. http://www.opennet.ru/opennews/art.shtml?num=50674 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 20:01 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39816617&tid=2039451]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
419ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 725ms |

| 0 / 0 |
