- Home
- Cyrus IMAP
- Download
- Contribute

# sasl_encodev - Encode data for transport to authenticated host

## Synopsis

    #include <sasl/sasl.h>

    int sasl_encode(sasl_conn_t *conn,
                    const char * input,
                    unsigned inputlen,
                    const char ** output,
                    unsigned * outputlen);

    int sasl_encodev(sasl_conn_t *conn,
                    const struct iovec * invec,
                    unsigned numiov,
                    const char ** output,
                    unsigned * outputlen);

## Description

sasl_encode encodes data to be sent to be sent to a remote host who we’ve had a successful authentication session with. If there is a negotiated security the data in signed/encrypted and the output should be sent without modification to the remote host. If there is no security layer the output is identical to the input.

sasl_encodev does the same, but for a struct iovec instead of a character buffer.

`int sasl_encode(sasl_conn_t *conn,`
`const char * input,`
`unsigned inputlen,`
`const char ** output,`
`unsigned * outputlen);`

  Parameters:

  - conn – is the SASL connection context
  - output – contains the decoded data and is allocated/freed by the library.
  - outputlen – length of output.

  `int sasl_encodev(sasl_conn_t *conn,`
  `const struct iovec * invec,`
  `unsigned numiov,`
  `const char ** output,`
  `unsigned * outputlen);`

  Parameters:

  - conn – is the SASL connection context
  - output – contains the decoded data and is allocated/freed by the library.
  - outputlen – length of output.

## Return Value

SASL callback functions should return SASL return codes. See sasl.h for a complete list. `SASL_OK` indicates success.

Other return codes indicate errors and should be handled.

## See Also

RFC 4422,:saslman:sasl(3), sasl_decode(3), sasl_errors(3)