---
name: "sasl_server_step"
section: "3"
platform: "macos"
package: "passwordserver_sasl"
version: "215"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/sasl_server_step"
---

# sasl\_server\_step(3)

Perform a step in the authentication negotiation

## NAME

sasl\_server\_step - Perform a step in the authentication negotiation

## SYNOPSIS

```
#include <sasl/sasl.h>

int sasl_server_step(sasl_conn_t *conn,
		          const char *clientin,
		          unsigned clientinlen,
	        	  const char ** serverout,
		          unsigned * serveroutlen);
```

## DESCRIPTION

**sasl\_server\_step()** performs a step in the authentication negotiation. It returns SASL\_OK if the whole negotiation is successful and SASL\_CONTINUE if this step is ok but at least one more step is needed.

*conn* is the SASL connection context

*clientin* is the data given by the client (decoded if the protocol encodes requests sent over the wire) *clientinlen* is the length of *clientin*

*serverout* and *serveroutlen* are set by the library and should be sent to the client.

## RETURN VALUE

sasl\_server\_step returns an integer which corresponds to one of the SASL error codes. SASL\_CONTINUE indicates success and that there are more steps needed in the authentication. SASL\_OK indicates that the authentication is complete. All other return codes indicate errors and should either be handled or the authentication session should be quit.

## CONFORMING TO

RFC 4422

## SEE ALSO

[sasl(3)](/sasl/3.md), [sasl\_errors(3)](/sasl_errors/3.md), [sasl\_server\_init(3)](/sasl_server_init/3.md), [sasl\_server\_new(3)](/sasl_server_new/3.md), [sasl\_server\_start(3)](/sasl_server_start/3.md)
