SSL Server Workspace
"Make sure that vast_server.pem and vast_server_key.pem are in a directory of your choice and referenced in <dir>.
The following example uses Unix style path separators."
| config anSciSocketAddress listenSocket secureSocket rv buffer msg |
[config := SciSslSocketConfiguration new
certificateFilename: '<dir>/vast_server.pem';
privateKeyFilename: '<dir>/vast_server_key.pem';
minProtocol: SciSslConstants::TLS1_3_VERSION;
yourself.
anSciSocketAddress := (SciSocketAddress new)
address: SciSocketConstants::INADDRANY;
port: 4466.
listenSocket := SciSslSocket newStreamSocket.
(rv := listenSocket bind: anSciSocketAddress) isSciError
ifTrue: [ self halt ].
(rv := listenSocket listen: 5) isSciError ifTrue: [ self halt ].
(secureSocket := listenSocket accept) isSciError ifTrue: [ self halt ].
listenSocket close.
(rv := secureSocket sslInitialize: config) isSslError
ifTrue: [ secureSocket close. self halt ].
(rv := secureSocket sslAccept) isSslError
ifTrue: [ secureSocket close. self halt ].
buffer := ByteArray new: 4096.
(rv := secureSocket recv: buffer length: 4096 startingAt: 1 flags: 0)
isSslError ifTrue: [ self halt ].
msg := buffer copyFrom: 1 to: rv.
Transcript cr; nextPutAll: 'SslServer Got: ', msg asString.
rv := secureSocket
send: 'I hear you.' abrAsPSZ
length: 11
startingAt: 1
flags: 0.
rv isSslError ifTrue: [ self halt ].
secureSocket close. ] fork
Last modified date: 12/06/2023