Sample code for 30+ languages & platforms
PowerBuilder

Verify the Digital Signatures on an Email

See more Email Object Examples

Demonstrates the read-only Chilkat Email.SignaturesValid property, which is true when the email was received with one or more digital signatures and all of them validated, indicating the message was not altered. It is only meaningful when ReceivedSigned is true, so this example checks that first.

Background: A valid signature proves integrity — the bytes that were signed are exactly the bytes you received — but that is not the same as trust. A message can carry a perfectly valid signature from a certificate you have no reason to trust (self-signed, expired, or from an unknown issuer). So after confirming SignaturesValid, an application that needs assurance of who signed should separately examine the signer certificate and its chain (see LastSignerCert).

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Email

li_Success = 0

//  Demonstrates the read-only Email.SignaturesValid property, which is true if the email
//  was received with one or more digital signatures AND all of them validated (indicating
//  the email was not altered).  It is only meaningful when ReceivedSigned is true.

loo_Email = create oleobject
li_rc = loo_Email.ConnectToNewObject("Chilkat.Email")
if li_rc < 0 then
    destroy loo_Email
    MessageBox("Error","Connecting to COM object failed")
    return
end if

li_Success = loo_Email.LoadEml("qa_data/eml/signed.eml")
if li_Success = 0 then
    Write-Debug loo_Email.LastErrorText
    destroy loo_Email
    return
end if

if loo_Email.ReceivedSigned = 1 then
    if loo_Email.SignaturesValid = 1 then
        Write-Debug "The signature(s) verified: the email was not altered."
    else
        Write-Debug "Signature verification FAILED."
    end if

else
    Write-Debug "This email was not received with a digital signature."
end if

//  Note: Paths such as "qa_data/..." are relative local filesystem paths,
//  relative to the current working directory of the running application.


destroy loo_Email