222 int bind(
string str, softbool reuseaddr =
False);
240 int bind(
int port, softbool reuseaddr =
False);
272 nothing
bindINET(*
string iface, *softstring service, softbool reuseaddr =
False, softint family =
AF_UNSPEC, softint socktype =
SOCK_STREAM, softint protocol = 0);
364 nothing
connect(
string target, timeout timeout_ms = -1);
392 nothing
connectINET(
string host, softstring service, timeout timeout_ms = -1, softint family =
AF_UNSPEC, softint socktype =
SOCK_STREAM, softint protocol = 0);
453 nothing
connectSSL(
string target, timeout timeout_ms = -1);
777 int listen(
int backlog = 20);
932 string recv(softint size = 0, timeout timeout_ms = -1);
985 int recvi1(timeout timeout_ms = -1);
1011 int recvi2(timeout timeout_ms = -1);
1063 int recvi4(timeout timeout_ms = -1);
1115 int recvi8(timeout timeout_ms = -1);
1167 int recvu1(timeout timeout_ms = -1);
1193 int recvu2(timeout timeout_ms = -1);
1245 int recvu4(timeout timeout_ms = -1);
1333 int send(
string str, timeout timeout_ms = -1);
1360 nothing
send2(
binary bin, timeout timeout_ms = -1);
1389 nothing
send2(
string str, timeout timeout_ms = -1);
1418 int sendBinary(
string str, timeout timeout_ms = -1);
1473 nothing
sendBinary2(
string str, timeout timeout_ms = -1);
1531 nothing
sendHTTPMessage(
string method,
string path,
string http_version,
hash headers, *
string body, *reference info, timeout timeout_ms = -1);
1561 nothing
sendHTTPMessage(
string method,
string path,
string http_version,
hash headers,
binary body, *reference info, timeout timeout_ms = -1);
1589 nothing
sendHTTPResponse(softint status_code,
string status_desc,
string http_version,
hash headers, *
string body, timeout timeout_ms = -1);
1615 nothing
sendHTTPResponse(softint status_code,
string status_desc,
string http_version,
hash headers,
binary body, timeout timeout_ms = -1);
1642 int sendi1(softint i = 0, timeout timeout_ms = -1);
1669 int sendi2(softint i = 0, timeout timeout_ms = -1);
1696 int sendi2LSB(softint i = 0, timeout timeout_ms = -1);
1723 int sendi4(softint i = 0, timeout timeout_ms = -1);
1750 int sendi4LSB(softint i = 0, timeout timeout_ms = -1);
1777 int sendi8(softint i = 0, timeout timeout_ms = -1);
1804 int sendi8LSB(softint i = 0, timeout timeout_ms = -1);
1998 nothing
setWarningQueue(
int warning_ms,
int warning_bs, Queue queue, any arg, timeout min_ms = 1s);
2136 "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT":
"Unable to get issuer certificate",
2137 "X509_V_ERR_UNABLE_TO_GET_CRL":
"Unable to get certificate CRL",
2138 "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE":
"Unable to decrypt certificate's signature. This means that the actual signature value could not be determined rather than it not matching the expected value; this is only meaningful for RSA",
2139 "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE":
"Unable to decrypt CRL's signature",
2140 "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY":
"Unable to decode issuer public key (SubjectPublicKeyInfo)",
2141 "X509_V_ERR_CERT_SIGNATURE_FAILURE":
"Certificate signature failure; the signature of the certificate is invalid",
2142 "X509_V_ERR_CRL_SIGNATURE_FAILURE":
"CRL signature failure; the signature of the certificate is invalid",
2143 "X509_V_ERR_CERT_NOT_YET_VALID":
"Certificate is not yet valid",
2144 "X509_V_ERR_CERT_HAS_EXPIRED":
"Certificate has expired",
2145 "X509_V_ERR_CRL_NOT_YET_VALID":
"CRL is not yet valid",
2146 "X509_V_ERR_CRL_HAS_EXPIRED":
"CRL has expired",
2147 "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD":
"Format error in certificate's notBefore field (invalid time)",
2148 "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD":
"Format error in certificate's notAfter field (invalid time)",
2149 "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD":
"Format error in CRL's lastUpdate field (invalid time)",
2150 "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD":
"Format error in CRL's nextUpdate field (invalid time)",
2151 "X509_V_ERR_OUT_OF_MEM":
"Out of memory error",
2152 "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT":
"Certificate is self-signed and cannot be found in the trusted list",
2153 "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN":
"Self signed certificate in certificate chain",
2154 "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY":
"Unable to get local issuer certificate. This normally means the list of trusted certificates is not complete",
2155 "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE":
"Unable to verify the first certificate",
2156 "X509_V_ERR_CERT_CHAIN_TOO_LONG":
"Certificate chain too long",
2157 "X509_V_ERR_CERT_REVOKED":
"Certificate has been revoked",
2158 "X509_V_ERR_INVALID_CA":
"Invalid CA certificate",
2159 "X509_V_ERR_PATH_LENGTH_EXCEEDED":
"The basicConstraints pathlength parameter has been exceeded",
2160 "X509_V_ERR_INVALID_PURPOSE":
"The certificate cannot be used for the specified purpose",
2161 "X509_V_ERR_CERT_UNTRUSTED":
"Root CA is not marked as trusted for the specified purpose",
2162 "X509_V_ERR_CERT_REJECTED":
"Root CA is marked to reject the specified purpose",
2163 "X509_V_ERR_SUBJECT_ISSUER_MISMATCH":
"The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate",
2164 "X509_V_ERR_AKID_SKID_MISMATCH":
"The current candidate issuer certificate was rejected because its subject key identifier was present and did not match the authority key identifier of the current certificate",
2165 "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH":
"Issuer name and serial number of candidate certificate do not match the authority key identifier of the current certificate",
2166 "X509_V_ERR_KEYUSAGE_NO_CERTSIGN":
"The keyUsage extension does not permit certificate signing",
2167 "X509_V_ERR_APPLICATION_VERIFICATION":
"Verification failure",
int shutdown()
Ensures that a socket will be closed even if the file descriptor is shared with other processes (for ...
int recvi1(timeout timeout_ms=-1)
Receives a 1-byte signed integer from the socket.
string recv(softint size=0, timeout timeout_ms=-1)
Receives data from the socket and returns a string tagged with the Socket's character encoding...
bool isWriteFinished(timeout timeout_ms=0)
Returns True or False depending on whether all the data has been written to the socket.
nothing connectUNIX(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to a UNIX domain socket file.
const X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
Certificate is self-signed and cannot be found in the trusted list.
Definition: QC_Socket.dox.h:2094
const AF_UNSPEC
unspecified address family
Definition: QC_Socket.dox.h:2184
const SOCK_RAW
raw socket interface, only available to the superuser, untested
Definition: QC_Socket.dox.h:2236
const X509_V_ERR_CERT_NOT_YET_VALID
Certificate is not yet valid.
Definition: QC_Socket.dox.h:2078
const X509_V_ERR_OUT_OF_MEM
Out of memory error.
Definition: QC_Socket.dox.h:2110
const X509_V_ERR_PATH_LENGTH_EXCEEDED
The basicConstraints pathlength parameter has been exceeded.
Definition: QC_Socket.dox.h:2112
nothing connectINETSSL(string host, softstring service, timeout timeout_ms=-1, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given host and port and attempts to establish a TLS/SSL connection; accepts an option...
const X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE
Unable to decrypt certificate's signature. This means that the actual signature value could not be de...
Definition: QC_Socket.dox.h:2120
const X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD
Format error in CRL's lastUpdate field (invalid time)
Definition: QC_Socket.dox.h:2100
const X509_V_ERR_APPLICATION_VERIFICATION
Verification failure.
Definition: QC_Socket.dox.h:2072
int bind(string str, softbool reuseaddr=False)
Opens and binds the socket to a port, interface and port (if the $bind_to string has a format "host:p...
int sendi4(softint i=0, timeout timeout_ms=-1)
Sends a 4-byte (32-bit) integer in big-endian format (network byte order) over the socket...
string readHTTPHeaderString(timeout timeout_ms=-1)
Retuns a string representing the data in the HTTP header read (reads until "\r\n\r\n") ...
The Socket class allows Qore programs safe access to network sockets.
Definition: QC_Socket.dox.h:122
const X509_VerificationReasons
maps from varification strings to verification code descriptions
Definition: QC_Socket.dox.h:2134
int getSendTimeout()
Returns the send timeout socket option value as an integer in milliseconds.
const X509_V_ERR_CERT_UNTRUSTED
Root CA is not marked as trusted for the specified purpose.
Definition: QC_Socket.dox.h:2086
hash getSocketInfo(bool host_lookup=True)
Returns information about the local socket as a hash.
int send(binary bin, int timeout_ms=-1)
Sends binary data over the socket; if any errors occur, an exception is thrown.
const X509_V_ERR_INVALID_CA
Invalid CA certificate.
Definition: QC_Socket.dox.h:2104
int recvi8LSB(timeout timeout_ms=-1)
Receives an 8-byte (64-bit) signed integer in little-endian format from the socket.
nothing bindUNIX(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Opens and binds the socket to the given UNIX domain socket file as given by the filename argument...
nothing setPrivateKey(SSLPrivateKey key)
Sets the private key to use for negotiating encrypted connections along with the X.509 certificate.
nothing setCertificate(SSLCertificate cert)
Sets the X.509 certificate to use for negotiating encrypted connections.
string getCharset()
Returns the character encoding for the socket.
int recvi2LSB(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) signed integer in little-endian format from the socket.
const True
logical True
Definition: qc_qore.dox.h:94
nothing connect(string target, timeout timeout_ms=-1)
Connects to a remote port (if the string has a format "host:port") or UNIX domain socket file with an...
hash getUsageInfo()
Returns performance statistics for the socket.
hash readHTTPChunkedBodyBinary(timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
hash readHTTPHeader(timeout timeout_ms=-1, *reference info)
Retuns a hash representing the data in the HTTP header read, or, if the data cannot be parsed as an H...
int recvi2(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) signed integer in big-endian format (network byte order) from the socket...
nothing send2(binary bin, timeout timeout_ms=-1)
Sends binary data over the socket; if any errors occur, an exception is thrown.
binary binary()
Always returns an empty binary object (of zero length)
const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT
Unable to get issuer certificate.
Definition: QC_Socket.dox.h:2126
*string getSSLCipherVersion()
Returns the version string of the cipher for an encrypted connection or NOTHING if a secure connectio...
hash readHTTPChunkedBody(timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
int setSendTimeout(timeout timeout_ms)
sets the send timeout as a socket option
int recvu4(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) unsigned integer in big-endian format (network byte order) from the socket...
int recvu2LSB(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) unsigned integer in little-endian format from the socket.
const False
logical False
Definition: qc_qore.dox.h:92
string getEncoding()
Returns the character encoding for the socket.
int recvi4LSB(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) signed integer in little-endian format from the socket.
int sendi8LSB(softint i=0, timeout timeout_ms=-1)
Sends an 8-byte (64-bit) integer in little-endian format over the socket.
nothing setWarningQueue(int warning_ms, int warning_bs, Queue queue, any arg, timeout min_ms=1s)
Sets a Queue object to receive socket warnings.
int recvi4(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) signed integer in big-endian format (network byte order) from the socket...
int listen(int backlog=20)
Listens for connections on a bound socket; sets the socket in a listening state.
nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash headers, *string body, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and an optional message body...
const X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE
Unable to verify the first certificate.
Definition: QC_Socket.dox.h:2130
const X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY
Unable to decode issuer public key (SubjectPublicKeyInfo)
Definition: QC_Socket.dox.h:2118
int sendi2LSB(softint i=0, timeout timeout_ms=-1)
Sends a 2-byte (16-bit) integer in little-endian format over the socket.
Socket acceptSSL()
Accepts connections on a listening socket and attempts to negotiate a TLS/SSL connection.
const X509_V_ERR_CRL_NOT_YET_VALID
CRL is not yet valid.
Definition: QC_Socket.dox.h:2090
const X509_V_ERR_AKID_SKID_MISMATCH
The current candidate issuer certificate was rejected because its subject key identifier was present ...
Definition: QC_Socket.dox.h:2070
const X509_V_ERR_INVALID_PURPOSE
The certificate cannot be used for the specified purpose.
Definition: QC_Socket.dox.h:2106
int setRecvTimeout(timeout timeout_ms)
sets the receive timeout as a socket option
int getSocket()
Returns the socket file descriptor number.
const X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD
Format error in CRL's nextUpdate field (invalid time)
Definition: QC_Socket.dox.h:2102
*string verifyPeerCertificate()
Returns a string code giving the result of verifying the remote certificate or NOTHING if an encrypte...
bool getNoDelay()
Returns the TCP_NODELAY setting for the socket.
int recvi8(timeout timeout_ms=-1)
Receives an 8-byte (64-bit) signed integer in big-endian format (network byte order) from the socket...
nothing connectSSL(string target, timeout timeout_ms=-1)
Connects to a remote socket and attempts to establish a TLS/SSL connection; accepts an optional timeo...
const X509_V_ERR_UNABLE_TO_GET_CRL
Unable to get certificate CRL.
Definition: QC_Socket.dox.h:2124
const X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD
Format error in certificate's notAfter field (invalid time)
Definition: QC_Socket.dox.h:2096
const X509_V_ERR_KEYUSAGE_NO_CERTSIGN
The keyUsage extension does not permit certificate signing.
Definition: QC_Socket.dox.h:2108
nothing sendHTTPMessage(string method, string path, string http_version, hash headers, *string body, *reference info, timeout timeout_ms=-1)
Sends an HTTP message with a method and user-defined headers given as a hash and an optional message ...
const X509_V_ERR_CERT_REJECTED
Root CA is marked to reject the specified purpose.
Definition: QC_Socket.dox.h:2080
binary recvBinary(softint size=0, timeout timeout_ms=-1)
Receives data from the socket and returns a binary object.
int sendi1(softint i=0, timeout timeout_ms=-1)
Sends a 1-byte integer over the socket.
This class implements a container for private key data.
Definition: QC_SSLPrivateKey.dox.h:5
nothing bindINET(*string iface, *softstring service, softbool reuseaddr=False, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Opens and binds the socket to the given IPv4 or IPv6 interface (or if no interface is given...
const AF_INET6
IPv6 address family.
Definition: QC_Socket.dox.h:2178
const AF_INET
IPv4 address family.
Definition: QC_Socket.dox.h:2176
nothing clearWarningQueue()
Removes any warning Queue object from the Socket.
const IPPROTO_UDP
for the UDP protocol
Definition: QC_Socket.dox.h:2226
const X509_V_ERR_CERT_SIGNATURE_FAILURE
Certificate signature failure; the signature of the certificate is invalid.
Definition: QC_Socket.dox.h:2084
constructor()
Creates the socket object.
int sendi4LSB(softint i=0, timeout timeout_ms=-1)
Sends a 4-byte (32-bit) integer in little-endian format over the socket.
const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
Unable to get local issuer certificate. This normally means the list of trusted certificates is not c...
Definition: QC_Socket.dox.h:2128
const X509_V_ERR_CERT_REVOKED
Certificate has been revoked.
Definition: QC_Socket.dox.h:2082
const X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH
Issuer name and serial number of candidate certificate do not match the authority key identifier of t...
Definition: QC_Socket.dox.h:2068
const AF_UNIX
UNIX domain address family (UNIX socket files)
Definition: QC_Socket.dox.h:2182
int recvu4LSB(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) unsigned integer in little-endian format from the socket.
const IPPROTO_TCP
for the TCP protocol
Definition: QC_Socket.dox.h:2224
const X509_V_OK
Verification OK.
Definition: QC_Socket.dox.h:2132
int getRecvTimeout()
Returns the receive timeout socket option value as an integer in milliseconds.
const AF_LOCAL
POSIX synonym for AF_UNIX.
Definition: QC_Socket.dox.h:2180
const X509_V_ERR_SUBJECT_ISSUER_MISMATCH
The current candidate issuer certificate was rejected because its subject name did not match the issu...
Definition: QC_Socket.dox.h:2116
nothing sendBinary2(string str, timeout timeout_ms=-1)
Sends string data over the socket without converting the string to the socket's encoding, but instead is sent exactly as-is; if any errors occur, an exception is thrown.
int sendi8(softint i=0, timeout timeout_ms=-1)
Sends an 8-byte (64-bit) integer in big-endian format (network byte order) over the socket...
SSLCertificate objects allow Qore code to work with X.509 certificate data.
Definition: QC_SSLCertificate.dox.h:5
hash getPeerInfo(bool host_lookup=True)
Returns a hash of information about the remote end for connected sockets.
int sendi2(softint i=0, timeout timeout_ms=-1)
Sends a 2-byte (16-bit) integer in big-endian format (network byte order) over the socket...
const X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD
Format error in certificate's notBefore field (invalid time)
Definition: QC_Socket.dox.h:2098
*string getSSLCipherName()
Returns the name of the cipher for an encrypted connection or NOTHING if a secure connection has not ...
copy()
Creates a new Socket object, not based on the source being copied.
nothing connectUNIXSSL(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given UNIX domain socket file and attempts to establish a TLS/SSL connection...
const X509_V_ERR_CRL_SIGNATURE_FAILURE
CRL signature failure; the signature of the certificate is invalid.
Definition: QC_Socket.dox.h:2092
bool isSecure()
Returns True if the connection is a secure TLS/SSL connection.
bool isOpen()
Returns True if the socket is open.
nothing upgradeServerToSSL()
Upgrades a server socket connection to a TLS/SSL connection.
nothing upgradeClientToSSL()
Upgrades a client socket connection to a TLS/SSL connection.
const X509_V_ERR_CERT_HAS_EXPIRED
Certificate has expired.
Definition: QC_Socket.dox.h:2076
clearStats()
Clears performance statistics.
nothing shutdownSSL()
Shuts down the SSL connection on a secure connection.
bool isDataAvailable(timeout timeout_ms=0)
Returns True or False depending on whether there is data to be read on the socket.
hash hash(object obj)
Returns a hash of an object's members.
const SOCK_STREAM
for sequenced, reliable, two-way connection-based byte streams (the default)
Definition: QC_Socket.dox.h:2238
nothing setCharset(string encoding)
Sets the character encoding for the socket.
int setNoDelay(bool nd=True)
Sets the boolean TCP_NODELAY setting for the socket.
int sendBinary(string str, timeout timeout_ms=-1)
Sends string data over the socket without converting the string to the socket's encoding, but instead is sent exactly as-is; if any errors occur, an exception is thrown.
const X509_V_ERR_CERT_CHAIN_TOO_LONG
Certificate chain too long.
Definition: QC_Socket.dox.h:2074
int close()
Closes an open socket.
int recvu2(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) unsigned integer in big-endian format (network byte order) from the socket...
nothing setEncoding(string encoding)
Sets the character encoding for the socket.
const X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN
Self signed certificate in certificate chain.
Definition: QC_Socket.dox.h:2114
const X509_V_ERR_CRL_HAS_EXPIRED
CRL has expired.
Definition: QC_Socket.dox.h:2088
Socket accept()
Accepts connections on a listening socket.
int getPort()
Returns the port number of the socket for INET sockets.
nothing setEventQueue()
Removes any Queue object from the Socket object so that socket events are no longer added to the Queu...
int recvu1(timeout timeout_ms=-1)
Receives a 1-byte unsigned integer from the socket.
nothing connectINET(string host, softstring service, timeout timeout_ms=-1, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given host and port with an optional timeout value with a millisecond resolution...
const SOCK_DGRAM
for datagrams (connectionless, unreliable messages of a fixed (typically small) maximum length ...
Definition: QC_Socket.dox.h:2234
const X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE
Unable to decrypt CRL's signature.
Definition: QC_Socket.dox.h:2122