else
*((const char **)pvalue) = conn->oparams.client_creds;
break;
+ case SASL_GSS_PEER_NAME:
+ if(! conn->oparams.gss_peer_name)
+ result = SASL_NOTDONE;
+ else
+ *((const char **)pvalue) = conn->oparams.gss_peer_name;
+ break;
+ case SASL_GSS_LOCAL_NAME:
+ if(! conn->oparams.gss_peer_name)
+ result = SASL_NOTDONE;
+ else
+ *((const char **)pvalue) = conn->oparams.gss_local_name;
+ break;
case SASL_SSF_EXTERNAL:
*((const sasl_ssf_t **)pvalue) = &conn->external.ssf;
break;
}
break;
+ case SASL_GSS_CREDS:
+ if (conn->type == SASL_CONN_SERVER)
+ ((sasl_server_conn_t *)conn)->sparams->gss_creds = (void *)value;
+ else
+ ((sasl_client_conn_t *)conn)->cparams->gss_creds = (void *)value;
+ break;
+ case SASL_CHANNEL_BINDINGS: {
+ struct sasl_channel_bindings *cb = (struct sasl_channel_bindings *)value;
+
+ if (conn->type == SASL_CONN_SERVER) {
+ ((sasl_server_conn_t *)conn)->sparams->chanbindingstype = cb->type;
+ ((sasl_server_conn_t *)conn)->sparams->chanbindingscrit = cb->critical;
+ ((sasl_server_conn_t *)conn)->sparams->chanbindingsdata = cb->data;
+ ((sasl_server_conn_t *)conn)->sparams->chanbindingslen = cb->len;
+ } else {
+ ((sasl_client_conn_t *)conn)->cparams->chanbindingstype = cb->type;
+ ((sasl_client_conn_t *)conn)->cparams->chanbindingscrit = cb->critical;
+ ((sasl_client_conn_t *)conn)->cparams->chanbindingsdata = cb->data;
+ ((sasl_client_conn_t *)conn)->cparams->chanbindingslen = cb->len;
+ }
+ break;
+ }
default:
sasl_seterror(conn, 0, "Unknown parameter type");
result = SASL_BADPARAM;