1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

r1010: make the dcesrv_crypto code a bit more generic...

fix type 'cyrpto' -> 'crypto'

metze
This commit is contained in:
Stefan Metzmacher 2004-06-04 12:32:37 +00:00 committed by Gerald (Jerry) Carter
parent 49d545a820
commit 90f4777dfc
3 changed files with 22 additions and 26 deletions

View File

@ -94,7 +94,7 @@ struct dcesrv_handle {
void (*destroy)(struct dcesrv_connection *, struct dcesrv_handle *); void (*destroy)(struct dcesrv_connection *, struct dcesrv_handle *);
}; };
struct dcesrv_cyrpto_ops { struct dcesrv_crypto_ops {
const char *name; const char *name;
uint8 auth_type; uint8 auth_type;
NTSTATUS (*start)(struct dcesrv_auth *auth); NTSTATUS (*start)(struct dcesrv_auth *auth);
@ -116,7 +116,7 @@ struct dcesrv_auth {
struct dcerpc_auth *auth_info; struct dcerpc_auth *auth_info;
struct { struct {
void *private_data; void *private_data;
const struct dcesrv_cyrpto_ops *ops; const struct dcesrv_crypto_ops *ops;
} crypto_ctx; } crypto_ctx;
}; };

View File

@ -34,8 +34,6 @@
NTSTATUS dcesrv_crypto_select_type(struct dcesrv_connection *dce_conn, NTSTATUS dcesrv_crypto_select_type(struct dcesrv_connection *dce_conn,
struct dcesrv_auth *auth) struct dcesrv_auth *auth)
{ {
NTSTATUS status;
if (auth->auth_info->auth_level != DCERPC_AUTH_LEVEL_INTEGRITY && if (auth->auth_info->auth_level != DCERPC_AUTH_LEVEL_INTEGRITY &&
auth->auth_info->auth_level != DCERPC_AUTH_LEVEL_PRIVACY) { auth->auth_info->auth_level != DCERPC_AUTH_LEVEL_PRIVACY) {
DEBUG(2,("auth_level %d not supported in dcesrv auth\n", 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 * maybe a dcesrv_crypto_find_backend_by_type() whould be better here
* to make thinks more generic * to make thinks more generic
*/ */
switch (auth->auth_info->auth_type) { auth->crypto_ctx.ops = dcesrv_crypto_backend_bytype(auth->auth_info->auth_type);
if (auth->crypto_ctx.ops == NULL) {
/* 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:
DEBUG(2,("dcesrv auth_type %d not supported\n", auth->auth_info->auth_type)); DEBUG(2,("dcesrv auth_type %d not supported\n", auth->auth_info->auth_type));
return NT_STATUS_INVALID_PARAMETER; return NT_STATUS_INVALID_PARAMETER;
} }
DEBUG(4,("dcesrv_crypto_startup: %s\n", nt_errstr(status))); return NT_STATUS_OK;
return status;
} }
/* /*
@ -139,3 +126,17 @@ void dcesrv_crypto_end(struct dcesrv_auth *auth)
{ {
auth->crypto_ctx.ops->end(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;
}

View File

@ -113,7 +113,7 @@ static void dcesrv_crypto_ntlmssp_end(struct dcesrv_auth *auth)
return; return;
} }
static const struct dcesrv_cyrpto_ops dcesrv_crypto_ntlmssp_ops = { static const struct dcesrv_crypto_ops dcesrv_crypto_ntlmssp_ops = {
.name = "ntlmssp", .name = "ntlmssp",
.auth_type = DCERPC_AUTH_TYPE_NTLMSSP, .auth_type = DCERPC_AUTH_TYPE_NTLMSSP,
.start = dcesrv_crypto_ntlmssp_start, .start = dcesrv_crypto_ntlmssp_start,
@ -128,12 +128,7 @@ static const struct dcesrv_cyrpto_ops dcesrv_crypto_ntlmssp_ops = {
/* /*
startup the cryptographic side of an authenticated dcerpc server startup the cryptographic side of an authenticated dcerpc server
*/ */
NTSTATUS dcesrv_crypto_ntlmssp_get_ops(struct dcesrv_connection *dce_conn, const struct dcesrv_crypto_ops *dcesrv_crypto_ntlmssp_get_ops(void)
struct dcesrv_auth *auth)
{ {
NTSTATUS status = NT_STATUS_OK; return &dcesrv_crypto_ntlmssp_ops;
auth->crypto_ctx.ops = &dcesrv_crypto_ntlmssp_ops;
return status;
} }