Xbase++
Xbase++
Configure a Socket for Server-Side TLS
See more Socket/SSL/TLS Examples
Demonstrates Socket.InitSslServer, which configures the object for server-side TLS using a server certificate that has access to its private key, then listens for and accepts a TLS connection.
The file path is relative to the application's current working directory. An absolute path may also be used. Supply the path appropriate to your own environment.
Background. A TLS listener presents the configured server certificate during the handshake. When client certificates are required, acceptable CA distinguished names are added before InitSslServer.
Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oSocket
LOCAL cPfxPassword
LOCAL oCert
LOCAL oConnectedSock
nSuccess := 0
oSocket := CreateObject("Chilkat.Socket")
// The file path is relative to the application's current working directory. An absolute path
// may also be used. Supply the path appropriate to your own environment.
// The PFX password should come from a secure source rather than being hard-coded.
cPfxPassword := "myPfxPassword"
oCert := CreateObject("Chilkat.Cert")
nSuccess := oCert:LoadPfxFile("qa_data/server.pfx", cPfxPassword)
IF (nSuccess == 0)
? oCert:LastErrorText
oSocket:destroy()
oCert:destroy()
RETURN
ENDIF
// Configure this object for server-side TLS using the certificate. The certificate must have
// access to its corresponding private key.
nSuccess := oSocket:InitSslServer(oCert)
IF (nSuccess == 0)
? oSocket:LastErrorText
oSocket:destroy()
oCert:destroy()
RETURN
ENDIF
// Listen for connections. Accepted connections will use TLS.
nSuccess := oSocket:BindAndListen(5000, 25)
IF (nSuccess == 0)
? oSocket:LastErrorText
oSocket:destroy()
oCert:destroy()
RETURN
ENDIF
oConnectedSock := CreateObject("Chilkat.Socket")
nSuccess := oSocket:AcceptNext(20000, oConnectedSock)
IF (nSuccess == 0)
? oSocket:LastErrorText
oSocket:destroy()
oCert:destroy()
oConnectedSock:destroy()
RETURN
ENDIF
? "Accepted a TLS client connection."
oSocket:destroy()
oCert:destroy()
oConnectedSock:destroy()