void *spare_ptr4;
int (*spare_fptr1)();
int (*spare_fptr2)();
- int spare_int1;
+ int chanbindingflag;
int spare_int2;
int spare_int3;
int spare_int4;
/* for additions which don't require a version upgrade; set to 0 */
void *gss_creds;
- void *spare_ptr2;
- void *spare_ptr3;
+ void *chanbindingtype;
+ void *chanbindingdata;
void *spare_ptr4;
/* Canonicalize a user name from on-wire to internal format
int (*spare_fptr1)();
- int spare_int1;
- int spare_int2;
+#define SASL_CB_FLAG_NONE 0x00 /* client did not support CB */
+#define SASL_CB_FLAG_USED 0x01 /* client supports CB, thinks server does not */
+#define SASL_CB_FLAG_WANT 0x02 /* client supports and used CB */
+#define SASL_CB_FLAG_CRIT 0x10 /* client requires CB */
+ int chanbindingflags;
+#define SASL_CB_PRESENT(params) ((params)->chanbindingtype != NULL && (params)->chanbindinglen)
+ int chanbindinglen;
int spare_int3;
/* flags field as passed to sasl_client_new */
/* This plugin allows proxying */
#define SASL_FEAT_ALLOWS_PROXY 0x0020
+/* Underlying mechanism uses GSS framing */
+#define SASL_FEAT_GSS_FRAMING 0x0040
+
+/* Underlying mechanism supports channel binding */
+#define SASL_FEAT_CHANNEL_BINDING 0x0080
+
/* client plug-in features */
#define SASL_FEAT_NEEDSERVERFQDN 0x0001
/* for additions which don't require a version upgrade; set to 0 */
void *gss_creds;
- void *spare_ptr2;
- void *spare_ptr3;
+ void *chanbindingtype;
+ void *chanbindingdata;
void *spare_ptr4;
int (*spare_fptr1)();
int (*spare_fptr2)();
- int spare_int1;
- int spare_int2;
+ int chanbindinglen;
+ int chanbindingcrit;
int spare_int3;
/* flags field as passed to sasl_server_new */