Sybase Technical Library - Product Manuals Home
[Search Forms] [Previous Section with Hits] [Next Section with Hits] [Clear Search] Expand Search

SSL overview [Table of Contents] Server directory object

Open Client Client-Library/C Reference Manual

[-] Chapter 2 Topics
[-] Security features
[-] Adaptive Server security features

Adaptive Server security features

Client applications that connect to Adaptive Server, SQL Server version 10.0 or later, or Open Server version 10.0 or later can take advantage of password encryption and challenge/response security handshakes.

Security handshaking: Challenge/Response

Servers use challenge/response security handshaking to provide an additional level of login security checking.

To provide the response that this handshake method requires, an application must be coded as follows:

See "Defining a negotiation callback".

Security handshaking: encrypted password

Sybase Servers uses encrypted password handshakes if the client requests password encryption. Encrypted password security handshaking occurs while the connection to the server is being established.

Applications must request password encryption by setting by the CS_SEC_ENCRYPTION connection property to CS_TRUE (the default is CS_FALSE). Otherwise, the password is sent to the server as plain text.

The password encryption process

When password encryption is enabled, the server receives the user passwords and remote-server passwords as follows:

  1. Client-Library initially sends a dummy password to the server consisting of a zero-length string.

  2. The server responds by asking the client for the encrypted passwords and sending an encryption key to the client.

Using password encryption in Client-Library applications

Password encryption is disabled by default, so applications that need password encryption must set the CS_SEC_ENCRYPTION property to CS_TRUE before calling ct_connect. The following code fragment enables password encryption:

CS_BOOL boolval;
 /*
 ** Enable password encryption for the connection 
 ** attempt. 
 */
 boolval = CS_TRUE; 
 if (ct_con_props(conn, CS_SET, 
                 CS_SEC_ENCRYPTION, 
                 (CS_VOID *)&boolval,
                 CS_UNUSED,(CS_INT *)NULL) 
     != CS_SUCCEED)
 {
   fprintf(stdout,
    "ct_con_props(SEC_ENCRYPTION) failed. Exiting\n"
          );
  (CS_VOID)ct_con_drop(conn);
   (CS_VOID)ct_exit(ctx, CS_FORCE_EXIT);
   (CS_VOID)cs_ctx_drop(ctx);
   exit(1);
 }

Password encryption is performed either by Client-Library's default encryption handler or by an application handler installed with ct_callback.

The default encryption handler performs the encryption expected by Adaptive Server. Applications that connect to Adaptive Server or an Open Server gateway to Adaptive Server should rely on the default encryption. Most applications fall into this category.

Applications that require an encryption handler include the following:

For information about defining a password encryption callback, see "Defining an encryption callback".


SSL overview [Table of Contents] Server directory object