PowerShell
PowerShell
Get Certificates within XML Signature
See more XML Digital Signatures Examples
Demonstrates how to get the certificates contained within an XML signature.Chilkat PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$success = $false
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
$sbXml = New-Object Chilkat.StringBuilder
# Load XML containing one or more signatures.
$success = $sbXml.LoadFile("qa_data/xml_dsig_valid_samples/multipleSigners/sp.pdf.XAdES.xml","utf-8")
if ($success -eq $false) {
$("Failed to load the XML file..")
exit
}
$dsig = New-Object Chilkat.XmlDSig
# First load the XML containing the signatures to be verified.
# Note that this particular Signature already contains the RSA public key that will be used
# for verification.
$success = $dsig.LoadSignatureSb($sbXml)
if ($success -ne $true) {
$($dsig.LastErrorText)
exit
}
# For each signature, verify and also get the certificate(s) contained within each Signature.
$i = 0
$saCerts = New-Object Chilkat.StringArray
$cert = New-Object Chilkat.Cert
$("numSignatures = " + $dsig.NumSignatures)
while ($i -lt $dsig.NumSignatures) {
# Select the Nth signature by setting the Selector property.
$dsig.Selector = $i
$bVerifyReferenceDigests = $true
$bVerified = $dsig.VerifySignature($bVerifyReferenceDigests)
$("Signature " + $i + 1 + " verified = " + $bVerified)
# Get the certificates embedded in this signature.
$saCerts.Clear()
$success = $dsig.GetCerts($saCerts)
if ($success -eq $true) {
$j = 0
while ($j -lt $saCerts.Count) {
$success = $cert.LoadFromBase64($saCerts.GetString($j))
if ($success -eq $true) {
$(" " + $cert.SubjectDN)
}
$j = $j + 1
}
}
$i = $i + 1
}