- if (!dce_conn->auth_state.auth_info || !dce_conn->auth_state.gensec_security) {
- status = dcerpc_push_auth(blob, call, pkt, NULL);
+ if (sig_size == 0) {
+ status = ncacn_push_auth(blob, call, lp_iconv_convenience(dce_conn->dce_ctx->lp_ctx), pkt, NULL);
+ return NT_STATUS_IS_OK(status);
+ }
+
+ switch (dce_conn->auth_state.auth_info->auth_level) {
+ case DCERPC_AUTH_LEVEL_PRIVACY:
+ case DCERPC_AUTH_LEVEL_INTEGRITY:
+ break;
+
+ case DCERPC_AUTH_LEVEL_CONNECT:
+ /*
+ * TODO: let the gensec mech decide if it wants to generate a signature
+ * that might be needed for schannel...
+ */
+ status = ncacn_push_auth(blob, call, lp_iconv_convenience(dce_conn->dce_ctx->lp_ctx), pkt, NULL);
+ return NT_STATUS_IS_OK(status);
+
+ case DCERPC_AUTH_LEVEL_NONE:
+ status = ncacn_push_auth(blob, call, lp_iconv_convenience(dce_conn->dce_ctx->lp_ctx), pkt, NULL);