diff options
Diffstat (limited to 'source4/rpc_server/dcesrv_crypto.c')
-rw-r--r-- | source4/rpc_server/dcesrv_crypto.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/source4/rpc_server/dcesrv_crypto.c b/source4/rpc_server/dcesrv_crypto.c index 11956fe3be..6d46388c97 100644 --- a/source4/rpc_server/dcesrv_crypto.c +++ b/source4/rpc_server/dcesrv_crypto.c @@ -34,8 +34,6 @@ NTSTATUS dcesrv_crypto_select_type(struct dcesrv_connection *dce_conn, struct dcesrv_auth *auth) { - NTSTATUS status; - if (auth->auth_info->auth_level != DCERPC_AUTH_LEVEL_INTEGRITY && auth->auth_info->auth_level != DCERPC_AUTH_LEVEL_PRIVACY) { DEBUG(2,("auth_level %d not supported in dcesrv auth\n", @@ -58,24 +56,13 @@ NTSTATUS dcesrv_crypto_select_type(struct dcesrv_connection *dce_conn, * maybe a dcesrv_crypto_find_backend_by_type() whould be better here * to make thinks more generic */ - switch (auth->auth_info->auth_type) { - -/* case DCERPC_AUTH_TYPE_SCHANNEL: - status = dcesrv_crypto_schannel_get_ops(dce_conn, auth); - break; -*/ - case DCERPC_AUTH_TYPE_NTLMSSP: - status = dcesrv_crypto_ntlmssp_get_ops(dce_conn, auth); - break; - - default: + auth->crypto_ctx.ops = dcesrv_crypto_backend_bytype(auth->auth_info->auth_type); + if (auth->crypto_ctx.ops == NULL) { DEBUG(2,("dcesrv auth_type %d not supported\n", auth->auth_info->auth_type)); return NT_STATUS_INVALID_PARAMETER; } - DEBUG(4,("dcesrv_crypto_startup: %s\n", nt_errstr(status))); - - return status; + return NT_STATUS_OK; } /* @@ -139,3 +126,17 @@ void dcesrv_crypto_end(struct dcesrv_auth *auth) { auth->crypto_ctx.ops->end(auth); } + +const struct dcesrv_crypto_ops *dcesrv_crypto_backend_bytype(uint8_t auth_type) +{ + switch (auth_type) { +#if 0 + case DCERPC_AUTH_TYPE_SCHANNEL: + return dcesrv_crypto_schannel_get_ops(); +#endif + case DCERPC_AUTH_TYPE_NTLMSSP: + return dcesrv_crypto_ntlmssp_get_ops(); + } + + return NULL; +} |