diff --git a/doc/api/crypto.md b/doc/api/crypto.md
index e84c10dfa4b469..d9124f500ccdde 100644
--- a/doc/api/crypto.md
+++ b/doc/api/crypto.md
@@ -856,6 +856,12 @@ thrown.
## `crypto` module methods and properties
+## crypto.constants
+
+Returns an object containing commonly used constants for crypto and security
+related operations. The specific constants currently defined are described in
+[Crypto Constants][].
+
### crypto.DEFAULT_ENCODING
The default encoding to use for functions that can take either strings
@@ -1205,11 +1211,11 @@ keys:
* `key` : {String} - PEM encoded private key
* `passphrase` : {String} - Optional passphrase for the private key
* `padding` : An optional padding value, one of the following:
- * `constants.RSA_NO_PADDING`
- * `constants.RSA_PKCS1_PADDING`
- * `constants.RSA_PKCS1_OAEP_PADDING`
+ * `crypto.constants.RSA_NO_PADDING`
+ * `crypto.constants.RSA_PKCS1_PADDING`
+ * `crypto.constants.RSA_PKCS1_OAEP_PADDING`
-All paddings are defined in the `constants` module.
+All paddings are defined in `crypto.constants`.
### crypto.privateEncrypt(private_key, buffer)
@@ -1223,11 +1229,11 @@ keys:
* `key` : {String} - PEM encoded private key
* `passphrase` : {String} - Optional passphrase for the private key
* `padding` : An optional padding value, one of the following:
- * `constants.RSA_NO_PADDING`
- * `constants.RSA_PKCS1_PADDING`
- * `constants.RSA_PKCS1_OAEP_PADDING`
+ * `crypto.constants.RSA_NO_PADDING`
+ * `crypto.constants.RSA_PKCS1_PADDING`
+ * `crypto.constants.RSA_PKCS1_OAEP_PADDING`
-All paddings are defined in the `constants` module.
+All paddings are defined in `crypto.constants`.
### crypto.publicDecrypt(public_key, buffer)
@@ -1241,14 +1247,14 @@ keys:
* `key` : {String} - PEM encoded public key
* `passphrase` : {String} - Optional passphrase for the private key
* `padding` : An optional padding value, one of the following:
- * `constants.RSA_NO_PADDING`
- * `constants.RSA_PKCS1_PADDING`
- * `constants.RSA_PKCS1_OAEP_PADDING`
+ * `crypto.constants.RSA_NO_PADDING`
+ * `crypto.constants.RSA_PKCS1_PADDING`
+ * `crypto.constants.RSA_PKCS1_OAEP_PADDING`
Because RSA public keys can be derived from private keys, a private key may
be passed instead of a public key.
-All paddings are defined in the `constants` module.
+All paddings are defined in `crypto.constants`.
### crypto.publicEncrypt(public_key, buffer)
@@ -1262,14 +1268,14 @@ keys:
* `key` : {String} - PEM encoded public key
* `passphrase` : {String} - Optional passphrase for the private key
* `padding` : An optional padding value, one of the following:
- * `constants.RSA_NO_PADDING`
- * `constants.RSA_PKCS1_PADDING`
- * `constants.RSA_PKCS1_OAEP_PADDING`
+ * `crypto.constants.RSA_NO_PADDING`
+ * `crypto.constants.RSA_PKCS1_PADDING`
+ * `crypto.constants.RSA_PKCS1_OAEP_PADDING`
Because RSA public keys can be derived from private keys, a private key may
be passed instead of a public key.
-All paddings are defined in the `constants` module.
+All paddings are defined in `crypto.constants`.
### crypto.randomBytes(size[, callback])
@@ -1313,22 +1319,22 @@ Load and set the `engine` for some or all OpenSSL functions (selected by flags).
`engine` could be either an id or a path to the engine's shared library.
The optional `flags` argument uses `ENGINE_METHOD_ALL` by default. The `flags`
-is a bit field taking one of or a mix of the following flags (defined in the
-`constants` module):
-
-* `ENGINE_METHOD_RSA`
-* `ENGINE_METHOD_DSA`
-* `ENGINE_METHOD_DH`
-* `ENGINE_METHOD_RAND`
-* `ENGINE_METHOD_ECDH`
-* `ENGINE_METHOD_ECDSA`
-* `ENGINE_METHOD_CIPHERS`
-* `ENGINE_METHOD_DIGESTS`
-* `ENGINE_METHOD_STORE`
-* `ENGINE_METHOD_PKEY_METHS`
-* `ENGINE_METHOD_PKEY_ASN1_METHS`
-* `ENGINE_METHOD_ALL`
-* `ENGINE_METHOD_NONE`
+is a bit field taking one of or a mix of the following flags (defined in
+`crypto.constants`):
+
+* `crypto.constants.ENGINE_METHOD_RSA`
+* `crypto.constants.ENGINE_METHOD_DSA`
+* `crypto.constants.ENGINE_METHOD_DH`
+* `crypto.constants.ENGINE_METHOD_RAND`
+* `crypto.constants.ENGINE_METHOD_ECDH`
+* `crypto.constants.ENGINE_METHOD_ECDSA`
+* `crypto.constants.ENGINE_METHOD_CIPHERS`
+* `crypto.constants.ENGINE_METHOD_DIGESTS`
+* `crypto.constants.ENGINE_METHOD_STORE`
+* `crypto.constants.ENGINE_METHOD_PKEY_METHS`
+* `crypto.constants.ENGINE_METHOD_PKEY_ASN1_METHS`
+* `crypto.constants.ENGINE_METHOD_ALL`
+* `crypto.constants.ENGINE_METHOD_NONE`
## Notes
@@ -1380,6 +1386,311 @@ Based on the recommendations of [NIST SP 800-131A][]:
See the reference for other recommendations and details.
+## Crypto Constants
+
+The following constants exported by `crypto.constants` apply to various uses of
+the `crypto`, `tls`, and `https` modules and are generally specific to OpenSSL.
+
+### OpenSSL Options
+
+
+
+| Constant |
+Description |
+
+
+SSL_OP_ALL |
+Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/manmaster/ssl/SSL_CTX_set_options.html for detail. |
+
+
+SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION |
+Allows legacy insecure renegotiation between OpenSSL and unpatched clients
+or servers. See
+https://www.openssl.org/docs/manmaster/ssl/SSL_CTX_set_options.html. |
+
+
+SSL_OP_CIPHER_SERVER_PREFERENCE |
+Uses the server's preferences instead of the clients when selecting a
+cipher. See
+https://www.openssl.org/docs/manmaster/ssl/SSL_CTX_set_options.html. |
+
+
+SSL_OP_CISCO_ANYCONNECT |
+Instructs OpenSSL to use Cisco's "speshul" version of DTLS_BAD_VER. |
+
+
+SSL_OP_COOKIE_EXCHANGE |
+Instructs OpenSSL to turn on cookie exchange. |
+
+
+SSL_OP_CRYPTOPRO_TLSEXT_BUG |
+Instructs OpenSSL to add server-hello extension from an early version of the
+cryptopro draft. |
+
+
+SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS |
+Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. |
+
+
+SSL_OP_EPHEMERAL_RSA |
+Instructs OpenSSL to always use the tmp_rsa key when performing RSA operations. |
+
+
+SSL_OP_LEGACY_SERVER_CONNECT |
+Allow initial connection to servers that do not support RI. |
+
+
+SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER |
+ |
+
+
+SSL_OP_MICROSOFT_SESS_ID_BUG |
+ |
+
+
+SSL_OP_MSIE_SSLV2_RSA_PADDING |
+Instructs OpenSSL to disable the workaround for a man-in-the-middle
+protocol-version vulnerability in the SSL 2.0 server implementation. |
+
+
+SSL_OP_NETSCAPE_CA_DN_BUG |
+ |
+
+
+SSL_OP_NETSCAPE_CHALLENGE_BUG |
+ |
+
+
+SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG |
+ |
+
+
+SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG |
+ |
+
+
+SSL_OP_NO_COMPRESSION |
+Instructs OpenSSL to disable support for SSL/TLS compression. |
+
+
+SSL_OP_NO_QUERY_MTU |
+ |
+
+
+SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION |
+Instructs OpenSSL to always start a new session when performing renegotiation. |
+
+
+SSL_OP_NO_SSLv2 |
+Instructs OpenSSL to turn off SSL v2 |
+
+
+SSL_OP_NO_SSLv3 |
+Instructs OpenSSL to turn off SSL v3 |
+
+
+SSL_OP_NO_TICKET |
+Instructs OpenSSL to disable use of RFC4507bis tickets. |
+
+
+SSL_OP_NO_TLSv1 |
+Instructs OpenSSL to turn off TLS v1 |
+
+
+SSL_OP_NO_TLSv1_1 |
+Instructs OpenSSL to turn off TLS v1.1 |
+
+
+SSL_OP_NO_TLSv1_2 |
+Instructs OpenSSL to turn off TLS v1.2 |
+
+SSL_OP_PKCS1_CHECK_1 |
+ |
+
+
+SSL_OP_PKCS1_CHECK_2 |
+ |
+
+
+SSL_OP_SINGLE_DH_USE |
+Instructs OpenSSL to always create a new key when using temporary/ephemeral
+DH parameters. |
+
+
+SSL_OP_SINGLE_ECDH_USE |
+Instructs OpenSSL to always create a new key when using temporary/ephemeral
+ECDH parameters. |
+
+SSL_OP_SSLEAY_080_CLIENT_DH_BUG |
+ |
+
+
+SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG |
+ |
+
+
+SSL_OP_TLS_BLOCK_PADDING_BUG |
+ |
+
+
+SSL_OP_TLS_D5_BUG |
+ |
+
+
+SSL_OP_TLS_ROLLBACK_BUG |
+Instructs OpenSSL to disable version rollback attack detection. |
+
+
+
+### OpenSSL Engine Constants
+
+
+
+| Constant |
+Description |
+
+
+O_RDONLY |
+Flag indicating to open a file for read-only access. |
+
+
+O_WRONLY |
+Flag indicating to open a file for write-only access. |
+
+
+O_RDWR |
+Flag indicating to open a file for read-write access. |
+
+
+O_CREAT |
+Flag indicating to create the file if it does not already exist. |
+
+
+O_EXCL |
+Flag indicating that opening a file should fail if the O_CREAT
+flag is set and the file already exists. |
+
+
+O_NOCTTY |
+Flag indicating that if path identifies a terminal device, opening the path
+shall not cause that terminal to become the controlling terminal for the
+process. |
+
+
+O_TRUNC |
+Flag indicating that if the file exists and is a regular file, and the file
+is opened successfully for write access, it's length shall be truncated to
+zero. |
+
+
+O_APPEND |
+Flag indicating that data will be appended to the end of the file. |
+
+
+O_DIRECTORY |
+Flag indicating that the open should fail if the path is not a
+directory. |
+
+
+O_NOATIME |
+Flag indicating reading accesses to the file system will no longer result in
+ an update to the `atime` information associated with the file. This flag is
+ available on Linux operating systems only. |
+
+
+O_NOFOLLOW |
+Flag indicating that the open should fail if the path is a symbolic
+link. |
+
+
+O_SYNC |
+Flag indicating that the file is opened for synchronous I/O. |
+
+
+O_SYMLINK |
+Flag indicating to open the symbolic link itself rather than the resource it
+is pointing to. |
+
+
+O_DIRECT |
+When set, an attempt will be made to minimize caching effects of file
+I/O. |
+
+
+O_NONBLOCK |
+Flag indicating to open the file in nonblocking mode when possible. |
+
+
+
+### File Type Constants
+
+
+
+| Constant |
+Description |
+
+
+SIGHUP |
+Sent to indicate when a controlling terminal or process is closed. |
+
+
+SIGINT |
+Sent to indicate when a user wishes to interrupt a process. |
+
+
+SIGQUIT |
+Sent to indicate when a user wishes to terminate a process and perform a
+core dump. |
+
+
+SIGILL |
+Sent to a process to notify that it has attempted to perform an illegal,
+malformed, unknown or privileged instruction. |
+
+
+SIGTRAP |
+Sent to a proces when an exception has occurred. |
+
+
+SIGABRT |
+Sent to a process to request that it abort. |
+
+
+SIGIOT |
+Synonym for SIGABRT |
+
+
+SIGBUS |
+Sent to a process to notify that it has caused a bus error. |
+
+
+SIGFPE |
+Sent to a process to notify that it has performed an illegal arithmetic
+operation. |
+
+
+SIGKILL |
+Sent to a process to terminate it immediately. |
+
+
+SIGUSR1 SIGUSR2 |
+Sent to a process to identify user-defined conditions. |
+
+
+SIGSEGV |
+Sent to a process to notify of a segmentation fault. |
+
+
+SIGPIPE |
+Sent to a process when it has attempted to write to a disconnected pipe. |
+
+
+SIGALRM |
+Sent to a process when a system timer elapses. |
+
+
+SIGTERM |
+Sent to a process to request termination. |
+
+
+SIGCHLD |
+Sent to a process when a child process terminates. |
+
+
+SIGSTKFLT |
+Sent to a process to indicate a stack fault on a coprocessor. |
+
+
+SIGCONT |
+Sent to instruct the operating system to continue a paused process. |
+
+
+SIGSTOP |
+Sent to instruct the operating system to halt a process. |
+
+
+SIGTSTP |
+Sent to a process to request it to stop. |
+
+
+SIGBREAK |
+Sent to indicate when a user wishes to interrupt a process. |
+
+
+SIGTTIN |
+Sent to a process when it reads from the TTY while in the background. |
+
+
+SIGTTOU |
+Sent to a process when it writes to the TTY while in the background. |
+
+
+SIGURG |
+Sent to a process when a socket has urgent data to read. |
+
+
+SIGXCPU |
+Sent to a process when it has exceeded it's limit on CPI usage. |
+
+
+SIGXFSZ |
+Sent to a process when it grows a file larger than the maximum allowed. |
+
+
+SIGVTALRM |
+Sent to a process when a virtual timer has elapsed. |
+
+
+SIGPROF |
+Sent to a process when a system timer has elapsed. |
+
+
+SIGWINCH |
+Sent to a process when the controlling terminal has changed sized. |
+
+
+SIGIO |
+Sent to a process when I/O is available. |
+
+
+SIGPOLL |
+Synonym for SIGIO |
+
+
+SIGLOST |
+Sent to a process when a file lock has been lost. |
+
+
+SIGPWR |
+Sent to a process to notify of a power failure. |
+
+
+SIGINFO |
+Synonym for SIGPWR |
+
+
+SIGSYS |
+Sent to a process to notify of a bad argument. |
+
+
+SIGUNUSED |
+Synonym for SIGSYS |
+
+
+
+### Error Constants
+
+The following error constants are exported by `os.constants.errno`:
+
+#### POSIX Error Constants
+
+
+
+| Constant |
+Description |
+
+
+E2BIG |
+Indicates that the list of arguments is longer than expected. |
+
+
+EACCES |
+Indicates that the operation did not have sufficient permissions. |
+
+
+EADDRINUSE |
+Indicates that the network address is already in use. |
+
+
+EADDRNOTAVAIL |
+Indicates that the network address is currently unavailable for use. |
+
+EAFNOSUPPORT |
+Indicates that the network address family is not supported. |
+
+EAGAIN |
+Indicates that there is currently no data available and to try the operation
+again later. |
+
+EALREADY |
+Indicates that the socket already has a pending connection in progress. |
+
+EBADF |
+Indicates that a file descriptor is not valid. |
+
+EBADMSG |
+Indicates an invalid data message. |
+
+EBUSY |
+Indicates that a device or resource is busy. |
+
+ECANCELED |
+Indicates that an operation was canceled. |
+
+ECHILD |
+Indicates that there are no child processes. |
+
+ECONNABORTED |
+Indicates that the network connection has been aborted. |
+
+ECONNREFUSED |
+Indicates that the network connection has been refused. |
+
+ECONNRESET |
+Indicates that the network connection has been reset. |
+
+EDEADLK |
+Indicates that a resource deadlock has been avoided. |
+
+EDESTADDRREQ |
+Indicates that a destination address is required. |
+
+EDOM |
+Indicates that an argument is out of the domain of the function. |
+
+EDQUOT |
+Indicates that the disk quota has been exceeded. |
+
+EEXIST |
+Indicates that the file already exists. |
+
+EFAULT |
+Indicates an invalid pointer address. |
+
+EFBIG |
+Indicates that the file is too large. |
+
+EHOSTUNREACH |
+Indicates that the host is unreachable. |
+
+EIDRM |
+Indicates that the identifier has been removed. |
+
+EILSEQ |
+Indicates an illegal byte sequence. |
+
+EINPROGRESS |
+Indicates that an operation is already in progress. |
+
+EINTR |
+Indicates that a function call was interrupted. |
+
+EINVAL |
+Indicates that an invalid argument was provided. |
+
+EIO |
+Indicates an otherwise unspecified I/O error. |
+
+EISCONN |
+Indicates that the socket is connected. |
+
+EISDIR |
+Indicates that the path is a directory. |
+
+ELOOP |
+Indicates too many levels of symbolic links in a path. |
+
+EMFILE |
+Indicates that there are too many open files. |
+
+EMLINK |
+Indicates that there are too many links. |
+
+EMSGSIZE |
+Indicates that the provided message is too long. |
+
+EMULTIHOP |
+Indicates that a multihop was attempted. |
+
+ENAMETOOLONG |
+Indicates that the filename is too long. |
+
+ENETDOWN |
+Indicates that the network is down. |
+
+ENETRESET |
+Indicates that the connection has been aborted by the network. |
+
+ENETUNREACH |
+Indicates that the network is unreachable. |
+
+ENFILE |
+Indicates too many open files in the system. |
+
+ENOBUFS |
+Indicates that no buffer space is available. |
+
+ENODATA |
+Indicates that no message is available on the stream head read queue. |
+
+ENODEV |
+Indicates that there is no such device. |
+
+ENOENT |
+Indicates that there is no such file or directory. |
+
+ENOEXEC |
+Indicates an exec format error. |
+
+ENOLCK |
+Indicates that there are no locks available. |
+
+ENOLINK |
+Indications that a link has been severed. |
+
+ENOMEM |
+Indicates that there is not enough space. |
+
+ENOMSG |
+Indicates that there is no message of the desired type. |
+
+ENOPROTOOPT |
+Indicates that a given protocol is not available. |
+
+ENOSPC |
+Indicates that there is no space available on the device. |
+
+ENOSR |
+Indicates that there are no stream resources available. |
+
+ENOSTR |
+Indicates that a given resource is not a stream. |
+
+ENOSYS |
+Indicates that a function has not been implemented. |
+
+ENOTCONN |
+Indicates that the socket is not connected. |
+
+ENOTDIR |
+Indicates that the path is not a directory. |
+
+ENOTEMPTY |
+Indicates that the directory is not empty. |
+
+ENOTSOCK |
+Indicates that the given item is not a socket. |
+
+ENOTSUP |
+Indicates that a given operation is not supported. |
+
+ENOTTY |
+Indicates an inappropriate I/O control operation. |
+
+ENXIO |
+Indicates no such device or address. |
+
+EOPNOTSUPP |
+Indicates that an operation is not supported on the socket. |
+
+EOVERFLOW |
+Indicates that a value is too large to be stored in a given data type. |
+
+EPERM |
+Indicates that the operation is not permitted. |
+
+EPIPE |
+Indicates a broken pipe. |
+
+EPROTO |
+Indicates a protocol error. |
+
+EPROTONOSUPPORT |
+Indicates that a protocol is not supported. |
+
+EPROTOTYPE |
+Indicates the wrong type of protocol for a socket. |
+
+ERANGE |
+Indicates that the results are too large. |
+
+EROFS |
+Indicates that the file system is read only. |
+
+ESPIPE |
+Indicates an invalid seek operation. |
+
+ESRCH |
+Indicates that there is no such process. |
+
+ESTALE |
+Indicates that the file handle is stale. |
+
+ETIME |
+Indicates an expired timer. |
+
+ETIMEDOUT |
+Indicates that the connection timed out. |
+
+ETXTBSY |
+Indicates that a text file is busy. |
+
+EWOULDBLOCK |
+Indicates that the operation would block. |
+
+EXDEV |
+Indicates an improper link.
+ |
+
+
+#### Windows Specific Error Constants
+
+The following error codes are specific to the Windows operating system:
+
+
+
+ | Constant |
+ Description |
+
+WSAEINTR |
+Indicates an interrupted function call. |
+
+WSAEBADF |
+Indicates an invalid file handle. |
+
+WSAEACCES |
+Indicates insufficient permissions to complete the operation. |
+
+WSAEFAULT |
+Indicates an invalid pointer address. |
+
+WSAEINVAL |
+Indicates that an invalid argument was passed. |
+
+WSAEMFILE |
+Indicates that there are too many open files. |
+
+WSAEWOULDBLOCK |
+Indicates that a resource is temporarily unavailable. |
+
+WSAEINPROGRESS |
+Indicates that an operation is currently in progress. |
+
+WSAEALREADY |
+Indicates that an operation is already in progress. |
+
+WSAENOTSOCK |
+Indicates that the resource is not a socket. |
+
+WSAEDESTADDRREQ |
+Indicates that a destination address is required. |
+
+WSAEMSGSIZE |
+Indicates that the message size is too long. |
+
+WSAEPROTOTYPE |
+Indicates the wrong protocol type for the socket. |
+
+WSAENOPROTOOPT |
+Indicates a bad protocol option. |
+
+WSAEPROTONOSUPPORT |
+Indicates that the protocol is not supported. |
+
+WSAESOCKTNOSUPPORT |
+Indicates that the socket type is not supported. |
+
+WSAEOPNOTSUPP |
+Indicates that the operation is not supported. |
+
+WSAEPFNOSUPPORT |
+Indicates that the protocol family is not supported. |
+
+WSAEAFNOSUPPORT |
+Indicates that the address family is not supported. |
+
+WSAEADDRINUSE |
+Indicates that the network address is already in use. |
+
+WSAEADDRNOTAVAIL |
+Indicates that the network address is not available. |
+
+WSAENETDOWN |
+Indicates that the network is down. |
+
+WSAENETUNREACH |
+Indicates that the network is unreachable. |
+
+WSAENETRESET |
+Indicates that the network connection has been reset. |
+
+WSAECONNABORTED |
+Indicates that the connection has been aborted. |
+
+WSAECONNRESET |
+Indicates that the connection has been reset by the peer. |
+
+WSAENOBUFS |
+Indicates that there is no buffer space available. |
+
+WSAEISCONN |
+Indicates that the socket is already connected. |
+
+WSAENOTCONN |
+Indicates that the socket is not connected. |
+
+WSAESHUTDOWN |
+Indicates that data cannot be sent after the socket has been shutdown. |
+
+WSAETOOMANYREFS |
+Indicates that there are too many references. |
+
+WSAETIMEDOUT |
+Indicates that the connection has timed out. |
+
+WSAECONNREFUSED |
+Indicates that the connection has been refused. |
+
+WSAELOOP |
+Indicates that a name cannot be translated. |
+
+WSAENAMETOOLONG |
+Indicates that a name was too long. |
+
+WSAEHOSTDOWN |
+Indicates that a network host is down. |
+
+WSAEHOSTUNREACH |
+Indicates that there is no route to a network host. |
+
+WSAENOTEMPTY |
+Indicates that the directory is not empty. |
+
+WSAEPROCLIM |
+Indicates that there are too many processes. |
+
+WSAEUSERS |
+Indicates that the user quota has been exceeded. |
+
+WSAEDQUOT |
+Indicates that the disk quota has been exceeded. |
+
+WSAESTALE |
+Indicates a stale file handle reference. |
+
+WSAEREMOTE |
+Indicates that the item is remote. |
+
+WSASYSNOTREADY |
+Indicates that the network subsystem is not ready. |
+
+WSAVERNOTSUPPORTED |
+Indicates that the winsock.dll version is out of range. |
+
+WSANOTINITIALISED |
+Indicates that successful WSAStartup has not yet been performed. |
+
+WSAEDISCON |
+Indicates that a graceful shutdown is in progress. |
+
+WSAENOMORE |
+Indicates that there are no more results. |
+
+WSAECANCELLED |
+Indicates that an operation has been canceled. |
+
+WSAEINVALIDPROCTABLE |
+Indicates that the procedure call table is invalid. |
+
+WSAEINVALIDPROVIDER |
+Indicates an invalid service provider. |
+
+WSAEPROVIDERFAILEDINIT |
+Indicates that the service provider failed to initialized. |
+
+WSASYSCALLFAILURE |
+Indicates a system call failure. |
+
+WSASERVICE_NOT_FOUND |
+Indicates that a service was not found. |
+
+WSATYPE_NOT_FOUND |
+Indicates that a class type was not found. |
+
+WSA_E_NO_MORE |
+Indicates that there are no more results. |
+
+WSA_E_CANCELLED |
+Indicates that the call was canceled. |
+
+WSAEREFUSED |
+Indicates that a database query was refused. |
+
+
+
+### libuv Constants
+
+