Как читать / анализировать / просматривать хэш подписи сертификата с помощью chilkat vba - PullRequest
0 голосов
/ 03 июня 2019

Я ищу решение в VBA, чтобы показать пользователю информацию о сертификате. Я почти у цели, но мне не хватает поля «Алгоритм подписи».

Просмотр интернета привел меня в Чилкат. Используя их руководство и примеры, мне удалось загрузить сертификат и получить почти все поля. Я часами искал интернет, но ничего не нашел в последнем поле: «Алгоритм подписи». Ниже приведен код (возможно, для повторного использования)

'Define variables
Dim cert As New ChilkatCert
Dim success As Long
Dim strProcedure As String
Dim strProp As String
Dim dteValidFrom As CkDateTime
Dim dteValidTo As CkDateTime

'Initialise variables
strProcedure = "ShowCertificate"

'  Load a DER (binary) encoded certificate.
'  To load from a .pem or .p7b, or any other file format that contains
'  just one certificate, call LoadFromFile in exactly the same way.
'  The LoadFromFile method automatically detects the format and loads the certificate.
success = cert.LoadFromFile(strCertName)
If (success = 0) Then
    MsgBox cert.LastErrorText
    Exit Function
End If

'Get the cert properties
strProp = strProp & "Version" & vbTab & vbTab & vbTab & "V" & cert.CertVersion & vbLf
strProp = strProp & "Serialno" & vbTab & vbTab & vbTab & LCase(cert.SerialNumber) & vbLf

'> How to retrieve the following two properties?
strProp = strProp & "Alg. for Sign" & vbTab & vbTab & "" & vbLf
strProp = strProp & "Sign. Alg" & vbTab & vbTab & "" & vbLf

strProp = strProp & "Issuer" & vbTab & vbTab & vbTab & cert.IssuerCN & vbLf

Set dteValidFrom = cert.GetValidFromDt()
strProp = strProp & "Valid From" & vbTab & vbTab & dteValidFrom.GetAsTimestamp(1) & vbLf

Set dteValidTo = cert.GetValidToDt()
strProp = strProp & "Valid To" & vbTab & vbTab & vbTab & dteValidTo.GetAsTimestamp(1) & vbLf

strProp = strProp & "Subject" & vbTab & vbTab & vbTab & cert.SubjectCN & vbLf

'  Get the public key:
Dim pubKey As PublicKey
Set pubKey = cert.ExportPublicKey()
If (cert.LastMethodSuccess <> 1) Then
    MsgBox cert.LastErrorText
    Exit Function
End If

'  Examine the key type
'  A PublicKey object can contain an RSA, ECC, or DSA public key.
'  The KeyType property will contain "rsa", "ecc", or "dsa".
strProp = strProp & "Public key" & vbTab & vbTab & vbTab & UCase(pubKey.KeyType) & " (" & pubKey.KeySize & " Bits)" & vbLf

strProp = strProp & "Subject Key Identifier" & vbTab & LCase(cert.HashOf("SubjectPublicKey", "sha1", "hex")) & vbLf
strProp = strProp & "Subject Alternative Name" & vbTab & cert.Rfc822Name & vbLf
strProp = strProp & "Thumbprint" & vbTab & vbTab & LCase(cert.Sha1Thumbprint)

ShowCertificate = strProp

Там много информации о том, как обрабатывать в C, но не в VBA. И, возможно, есть способ использовать вызовы crypt32 api, но это не в моей лиге. Там также много информации о том, как зашифровать и расшифровать, но я не заинтересован в этом, мне просто нужно показать пользователю информацию. Буду признателен за любую помощь в получении этого поля, полное решение с использованием Crypt32.

...