⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cview.vbs

📁 Digital Signature key tool
💻 VBS
📖 第 1 页 / 共 3 页
字号:
   ErrorStrings(7)  = "Cyclic chain"
   ErrorStrings(8)  = "Invalid extension"
   ErrorStrings(9)  = "Invalid policy constraints"
   ErrorStrings(10) = "Invalid basic constraints"
   ErrorStrings(11) = "Invalid name constraints"
   ErrorStrings(12) = "Not supported name constraint"
   ErrorStrings(13) = "Not defined name constraint"
   ErrorStrings(14) = "Not permitted name constraint"
   ErrorStrings(15) = "Has excluded name constraint"
   ErrorStrings(16) = "Offline revocation"
   ErrorStrings(17) = "No issuance chain policy"
   ErrorStrings(18) = "Partial chain"
   ErrorStrings(19) = "CTL invalid time"
   ErrorStrings(20) = "CTL invalid signature"
   ErrorStrings(21) = "CTL invalid usage"
   
   ' Initialize.
   GetStatusString = ""

   Dim sIndex
   For sIndex = LBound(StatusCodes) To UBound(StatusCodes)
      ' Check status.
      If (Status And StatusCodes(sIndex)) = StatusCodes(sIndex) Then
         If Len(GetStatusString) > 0 Then
            GetStatusString = GetStatusString & ", "
         End If
         GetStatusString = GetStatusString & ErrorStrings(sIndex)
      End If
   Next
   
   ' See if we have any unknown trust status.
   If (Status And Not KNOWN_TRUST_STATUS_MASK) <> 0 Then
      If Len(GetStatusString) > 0 Then
         GetStatusString = GetStatusString & ", "
      End If
      GetStatusString = GetStatusString & "Unknown trust error"
   End If
   
End Function ' End GetStatusString


'******************************************************************************
'
' Subroutine: DisplayCertificate
'
' Synopsis  : Display the certificate.
'
' Parameter : Chain     - The chain object containing the certificate to be 
'                         displayed.
'             cIndex    - Index of the certificate to be displayed.
'
'******************************************************************************

Sub DisplayCertificate (Chain, cIndex)

   ' Turn on exception handling, since some methods, such as 
   ' Certificate.Template and PrivateKey.IsExportable, are not available
   ' in some down level platforms.
   On Error Resume Next
   
   Const CAPICOM_CERT_INFO_SUBJECT_EMAIL_NAME    = 2
   Const CAPICOM_CERT_INFO_SUBJECT_UPN           = 4
   Const CAPICOM_CERT_INFO_SUBJECT_DNS_NAME      = 6
   Const CAPICOM_ENCODED_DATA_FORMAT_MULTI_LINES = 1
   Const CAPICOM_CERT_POLICIES_OID               = "2.5.29.32"
   
   Dim KeySpecStrings(2)
   KeySpecStrings(0) = "Unknown"
   KeySpecStrings(1) = "Exchange"
   KeySpecStrings(2) = "Signature"
   
   Dim ProviderTypes(24)
   ProviderTypes(0)  = "Unknown"
   ProviderTypes(1)  = "PROV_RSA_FULL"
   ProviderTypes(2)  = "PROV_RSA_SIG"
   ProviderTypes(3)  = "PROV_DSS"
   ProviderTypes(4)  = "PROV_FORTEZZA"
   ProviderTypes(5)  = "PROV_MS_EXCHANGE"
   ProviderTypes(6)  = "PROV_SSL"
   ProviderTypes(7)  = "PROV_STT_MER"
   ProviderTypes(8)  = "PROV_STT_ACQ"
   ProviderTypes(9)  = "PROV_STT_BRND"
   ProviderTypes(10) = "PROV_STT_ROOT"
   ProviderTypes(11) = "PROV_STT_ISS"
   ProviderTypes(12) = "PROV_RSA_SCHANNEL"
   ProviderTypes(13) = "PROV_DSS_DH"
   ProviderTypes(14) = "PROV_EC_ECDSA_SIG"
   ProviderTypes(15) = "PROV_EC_ECNRA_SIG"
   ProviderTypes(16) = "PROV_EC_ECDSA_FULL"
   ProviderTypes(17) = "PROV_EC_ECNRA_FULL"
   ProviderTypes(18) = "PROV_DH_SCHANNEL"
   ProviderTypes(20) = "PROV_SPYRUS_LYNKS"
   ProviderTypes(21) = "PROV_RNG"
   ProviderTypes(22) = "PROV_INTEL_SEC"
   ProviderTypes(23) = "PROV_REPLACE_OWF"
   ProviderTypes(24) = "PROV_RSA_AES"
   
   Dim iIndex : iIndex = 0
   
   Dim Certificate
   Set Certificate = Chain.Certificates.Item(cIndex)
   
   Wscript.Stdout.Writeline "=== Certificate " & CStr(cIndex) & " of " & CStr(Chain.Certificates.Count) & " (status = 0x" & Hex(Chain.Status(cIndex)) & ") ==="
   Wscript.Stdout.Writeline
   Wscript.Stdout.Writeline "Subject Name:"
   Wscript.Stdout.Writeline "  Simple name = " & Certificate.SubjectName
   Wscript.Stdout.Writeline "  Email name  = " & Certificate.GetInfo(CAPICOM_CERT_INFO_SUBJECT_EMAIL_NAME)
   Wscript.Stdout.Writeline "  UPN name    = " & Certificate.GetInfo(CAPICOM_CERT_INFO_SUBJECT_UPN)
   Wscript.Stdout.Writeline "  DNS name    = " & Certificate.GetInfo(CAPICOM_CERT_INFO_SUBJECT_DNS_NAME)
   Wscript.Stdout.Writeline
   Wscript.Stdout.Writeline "Issuer Name: " & Certificate.IssuerName
   Wscript.Stdout.Writeline
   Wscript.Stdout.Writeline "Serial Number: " & Certificate.SerialNumber
   Wscript.Stdout.Writeline
   Wscript.Stdout.Writeline "Not Before: " & Certificate.ValidFromDate
   Wscript.Stdout.Writeline
   Wscript.Stdout.Writeline "Not After: " & Certificate.ValidToDate
   Wscript.Stdout.Writeline
   Wscript.Stdout.Writeline "SHA1 Hash: " & Certificate.Thumbprint
   Wscript.Stdout.Writeline
   If Chain.Status(cIndex) = 0 Then
      Wscript.Stdout.Writeline "IsValid: True"
   Else
      Wscript.Stdout.Writeline "IsValid: False"
   End If
   Wscript.Stdout.Writeline
   Wscript.Stdout.Writeline "Archived: " & Certificate.Archived
   Wscript.Stdout.Writeline
       
   If Certificate.BasicConstraints.IsPresent Then
      Wscript.Stdout.Writeline "Basic Constraints:" 
      Wscript.Stdout.Writeline "  Critical          = " & Certificate.BasicConstraints.IsCritical
      Wscript.Stdout.Writeline "  CA                = " & Certificate.BasicConstraints.IsCertificateAuthority
      Wscript.stdout.Write     "  PathLenConstraint = "
      If Certificate.BasicConstraints.IsPathLenConstraintPresent Then
         Wscript.Stdout.Writeline CStr(Certificate.BasicConstraints.PathLenConstraint)
      Else
         Wscript.Stdout.Writeline "Not present."
      End If
   Else
      Wscript.Stdout.Writeline "Basic Constraints: Not present."
   End If          
   Wscript.Stdout.Writeline
   
   If Certificate.KeyUsage.IsPresent Then
      Wscript.Stdout.Writeline "Key Usage:"
      Wscript.Stdout.Writeline "  Critical                  = "& Certificate.KeyUsage.IsCritical
      Wscript.Stdout.Writeline "  IsDigitalSignatureEnabled = " & Certificate.KeyUsage.IsDigitalSignatureEnabled 
      Wscript.Stdout.Writeline "  IsNonRepudiationEnabled   = " & Certificate.KeyUsage.IsNonRepudiationEnabled
      Wscript.Stdout.Writeline "  IsKeyEnciphermentEnabled  = " & Certificate.KeyUsage.IsKeyEnciphermentEnabled
      Wscript.Stdout.Writeline "  IsDataEnciphermentEnabled = " & Certificate.KeyUsage.IsDataEnciphermentEnabled
      Wscript.Stdout.Writeline "  IsKeyAgreementEnabled     = " & Certificate.KeyUsage.IsKeyAgreementEnabled
      Wscript.Stdout.Writeline "  IsKeyCertSignEnabled      = " & Certificate.KeyUsage.IsKeyCertSignEnabled
      Wscript.Stdout.Writeline "  IsCRLSignEnabled          = " & Certificate.KeyUsage.IsCRLSignEnabled
      Wscript.Stdout.Writeline "  IsEncipherOnlyEnabled     = " & Certificate.KeyUsage.IsEncipherOnlyEnabled
      Wscript.Stdout.Writeline "  IsDecipherOnlyEnabled     = " & Certificate.KeyUsage.IsDecipherOnlyEnabled
   Else
      Wscript.Stdout.Writeline "Key Usage: Not present."
   End If
   Wscript.Stdout.Writeline
   
   If Certificate.ExtendedKeyUsage.IsPresent Then
      If Certificate.ExtendedKeyUsage.EKUs.Count > 0 Then
         Dim OID
         Set OID = CreateObject("CAPICOM.OID")
         Wscript.Stdout.Writeline "Extended Key Usage:"
         Wscript.Stdout.Writeline "  Critical = " & Certificate.ExtendedKeyUsage.IsCritical
         Dim EKU
         For Each EKU In Certificate.ExtendedKeyUsage.EKUs
            OID.Value = EKU.OID
            Wscript.Stdout.Writeline "  " & OID.FriendlyName & " (" & OID.Value & ")"
         Next
         Set OID = Nothing
      Else
         Wscript.Stdout.Writeline "Extended Key Usage: Not valid for any usage."
         Wscript.Stdout.Writeline "  Critical = " & Certificate.ExtendedKeyUsage.IsCritical
      End If
   Else
      Wscript.Stdout.Writeline "Extended Key Usage: Not present (valid for all usages)."
   End If
   Wscript.Stdout.Writeline
   
   If Certificate.Template.IsPresent Then
      Wscript.Stdout.Writeline "Template:"
      Wscript.Stdout.Writeline "  Critical = " & Certificate.Template.IsCritical
      Wscript.Stdout.Writeline "  Name     = " & Certificate.Template.Name
      Wscript.Stdout.Writeline "  OID      = " & Certificate.Template.OID.FriendlyName & "(" & Certificate.Template.OID.Value & ")"
      Wscript.Stdout.Writeline "  Major    = " & CStr(Certificate.Template.MajorVersion)
      Wscript.Stdout.Writeline "  Minor    = " & CStr(Certificate.Template.MinorVersion)
   Else
      Wscript.Stdout.Writeline "Template: Not present."
   End If          
   Wscript.Stdout.Writeline
   
   Wscript.Stdout.Writeline "Public Key:"
   Wscript.Stdout.Writeline "  Algorithm  = " & Certificate.PublicKey.Algorithm.FriendlyName & "(" & Certificate.PublicKey.Algorithm.Value & ")"
   Wscript.Stdout.Writeline "  Length     = " & CStr(Certificate.PublicKey.Length) & " bits"
   Wscript.Stdout.Writeline "  Key blob   = " & Certificate.PublicKey.EncodedKey.Format()
   Wscript.Stdout.Writeline "  Parameters = " & Certificate.PublicKey.EncodedParameters.Format()
   
   If Certificate.HasPrivateKey Then
      Wscript.Stdout.Writeline "Private Key:"
      Wscript.Stdout.Writeline "  Container name   = " & Certificate.PrivateKey.ContainerName
      Wscript.Stdout.Writeline "  Unique name      = " & Certificate.PrivateKey.UniqueContainerName
      Wscript.Stdout.Writeline "  Provider name    = " & Certificate.PrivateKey.ProviderName
      Wscript.StdOut.Write     "  Provider type    = " 
      If Certificate.PrivateKey.ProviderType > UBound(ProviderTypes) Then
         Wscript.Stdout.Writeline ProviderTypes(0) & " (" & CStr(Certificate.PrivateKey.ProviderType) & ")"
      Else
         Wscript.Stdout.Writeline ProviderTypes(Certificate.PrivateKey.ProviderType) & " (" & CStr(Certificate.PrivateKey.ProviderType) & ")"
      End If
      Wscript.StdOut.Write     "  Key spec         = " 
      If Certificate.PrivateKey.KeySpec > UBound(KeySpecStrings) Then
         Wscript.Stdout.Writeline KeySpecStrings(0) & " (" & CStr(Certificate.PrivateKey.KeySpec) & ")"
      Else
         Wscript.Stdout.Writeline KeySpecStrings(Certificate.PrivateKey.KeySpec) & " (" & CStr(Certificate.PrivateKey.KeySpec) & ")"
      End If
      Wscript.Stdout.Writeline "  Accessible       = " & Certificate.PrivateKey.IsAccessible
      Wscript.Stdout.Writeline "  Protected        = " & Certificate.PrivateKey.IsProtected
      Wscript.Stdout.Writeline "  Exportable       = " & Certificate.PrivateKey.IsExportable
      Wscript.Stdout.Writeline "  Removable        = " & Certificate.PrivateKey.IsRemovable
      Wscript.Stdout.Writeline "  Machine keyset   = " & Certificate.PrivateKey.IsMachineKeyset
      Wscript.Stdout.Writeline "  Hardware storage = " & Certificate.PrivateKey.IsHardwareDevice
   Else
      Wscript.Stdout.Writeline "Private Key: Not found."
   End If
   Wscript.Stdout.Writeline
   
   If Verbose Then
      iIndex = 0
      Dim Extension
      For Each Extension In Certificate.Extensions
         iIndex = iIndex + 1
         Wscript.Stdout.Writeline "Extension #" & CStr(iIndex) & ": " & Extension.OID.FriendlyName & "(" & Extension.OID.Value & ")"
         Wscript.Stdout.Writeline "  " & Extension.EncodedData.Format(CAPICOM_ENCODED_DATA_FORMAT_MULTI_LINES)
         
         If Not Extension.EncodedData.Decoder Is Nothing Then
            Select Case Extension.OID.Value
            Case CAPICOM_CERT_POLICIES_OID
               Dim CertPolicies
               Set CertPolicies = Extension.EncodedData.Decoder
               Wscript.Stdout.Writeline "Decoded Certificate Policies: " & CStr(CertPolicies.Count) & " PolicyInformation(s)"
               
               Dim pIndex : pIndex = 0
               Dim PolicyInformation
               For Each PolicyInformation In CertPolicies
                  pIndex = pIndex + 1
                  Wscript.Stdout.Writeline "  PolicyInformation #" & CStr(pIndex) & ": " & CStr(PolicyInformation.Qualifiers.Count) & " Qualifier(s)"
                  Wscript.Stdout.Writeline "    OID = " & PolicyInformation.OID.FriendlyName & "(" & PolicyInformation.OID.Value & ")"
                  Dim qIndex : qIndex = 0
                  Dim Qualifier
                  For Each Qualifier In PolicyInformation.Qualifiers
                     qIndex = qIndex + 1
                     Wscript.Stdout.Writeline "    Qualifier #" & CStr(qIndex) & ":"
                     Wscript.Stdout.Writeline "      OID               = " & Qualifier.OID.FriendlyName & "(" & Qualifier.OID.Value & ")"
                     Wscript.Stdout.Writeline "      CPS URI           = " & Qualifier.CPSPointer
                     Wscript.Stdout.Writeline "      Organization name = " & Qualifier.OrganizationName
                     Wscript.Stdout.Write     "      Notice number(s)  = "
                     If Not Qualifier.NoticeNumbers Is Nothing Then
                        Dim nIndex
                        For nIndex = 1 to Qualifier.NoticeNumbers.Count
                           If nIndex > 1 Then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -