Sample code for 30+ languages & platforms
PureBasic

Verify SSL Server Certificate

See more Socket/SSL/TLS Examples

Demonstrates how to connect to an SSL server and verify its SSL certificate.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSocket.pb"
IncludeFile "CkCert.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example requires the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    socket.i = CkSocket::ckCreate()
    If socket.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ssl.i = 1
    maxWaitMillisec.i = 20000

    ; The SSL server hostname may be an IP address, a domain name,
    ; or "localhost". 
    sslServerHost.s
    sslServerHost = "www.paypal.com"
    sslServerPort.i = 443

    ; Connect to the SSL server:
    success = CkSocket::ckConnect(socket,sslServerHost,sslServerPort,ssl,maxWaitMillisec)
    If success = 0
        Debug CkSocket::ckLastErrorText(socket)
        CkSocket::ckDispose(socket)
        ProcedureReturn
    EndIf

    cert.i = CkCert::ckCreate()
    If cert.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    bExpired.i
    bRevoked.i
    bSignatureVerified.i
    bTrustedRoot.i

    success = CkSocket::ckGetServerCert(socket,cert)
    If success <> 0

        Debug "Server Certificate:"
        Debug "Distinguished Name: " + CkCert::ckSubjectDN(cert)
        Debug "Common Name: " + CkCert::ckSubjectCN(cert)
        Debug "Issuer Distinguished Name: " + CkCert::ckIssuerDN(cert)
        Debug "Issuer Common Name: " + CkCert::ckIssuerCN(cert)

        bExpired = CkCert::ckExpired(cert)
        bRevoked = CkCert::ckRevoked(cert)
        bSignatureVerified = CkCert::ckSignatureVerified(cert)
        bTrustedRoot = CkCert::ckTrustedRoot(cert)

        Debug "Expired: " + Str(bExpired)
        Debug "Revoked: " + Str(bRevoked)
        Debug "Signature Verified: " + Str(bSignatureVerified)
        Debug "Trusted Root: " + Str(bTrustedRoot)

    EndIf

    ; Close the connection with the server
    ; Wait a max of 20 seconds (20000 millsec)
    success = CkSocket::ckClose(socket,20000)


    CkSocket::ckDispose(socket)
    CkCert::ckDispose(cert)


    ProcedureReturn
EndProcedure